﻿2026-06-22T02:04:44.0766212Z ##[group]Run ./traceable-reqs check --json
2026-06-22T02:04:44.0766580Z [36;1m./traceable-reqs check --json[0m
2026-06-22T02:04:44.0779110Z shell: /usr/bin/bash -e {0}
2026-06-22T02:04:44.0779377Z ##[endgroup]
2026-06-22T02:04:44.1396807Z {
2026-06-22T02:04:44.1397268Z   "schemaVersion": 1,
2026-06-22T02:04:44.1398046Z   "summary": {
2026-06-22T02:04:44.1398304Z     "requirementCount": 280,
2026-06-22T02:04:44.1398599Z     "completeCount": 280,
2026-06-22T02:04:44.1399054Z     "incompleteCount": 0,
2026-06-22T02:04:44.1399354Z     "findingCount": 0
2026-06-22T02:04:44.1399720Z   },
2026-06-22T02:04:44.1400021Z   "requirements": [
2026-06-22T02:04:44.1400346Z     {
2026-06-22T02:04:44.1400660Z       "id": "REQ-API-1",
2026-06-22T02:04:44.1401138Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-22T02:04:44.1401661Z       "requiredStages": [
2026-06-22T02:04:44.1401997Z         "impl",
2026-06-22T02:04:44.1402307Z         "unit",
2026-06-22T02:04:44.1402593Z         "int"
2026-06-22T02:04:44.1402945Z       ],
2026-06-22T02:04:44.1403246Z       "stages": {
2026-06-22T02:04:44.1403555Z         "doc": {
2026-06-22T02:04:44.1403884Z           "complete": false,
2026-06-22T02:04:44.1404241Z           "evidence": []
2026-06-22T02:04:44.1404572Z         },
2026-06-22T02:04:44.1404869Z         "impl": {
2026-06-22T02:04:44.1405202Z           "complete": true,
2026-06-22T02:04:44.1405569Z           "evidence": [
2026-06-22T02:04:44.1405903Z             {
2026-06-22T02:04:44.1406261Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1406672Z               "line": 15
2026-06-22T02:04:44.1406996Z             }
2026-06-22T02:04:44.1407295Z           ]
2026-06-22T02:04:44.1407600Z         },
2026-06-22T02:04:44.1407886Z         "int": {
2026-06-22T02:04:44.1408206Z           "complete": true,
2026-06-22T02:04:44.1409344Z           "evidence": [
2026-06-22T02:04:44.1409670Z             {
2026-06-22T02:04:44.1410018Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.1410448Z               "line": 13
2026-06-22T02:04:44.1410763Z             }
2026-06-22T02:04:44.1411058Z           ]
2026-06-22T02:04:44.1411344Z         },
2026-06-22T02:04:44.1411635Z         "unit": {
2026-06-22T02:04:44.1411955Z           "complete": true,
2026-06-22T02:04:44.1412291Z           "evidence": [
2026-06-22T02:04:44.1412627Z             {
2026-06-22T02:04:44.1412947Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1413363Z               "line": 717
2026-06-22T02:04:44.1413697Z             },
2026-06-22T02:04:44.1413979Z             {
2026-06-22T02:04:44.1414308Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1414712Z               "line": 804
2026-06-22T02:04:44.1415025Z             }
2026-06-22T02:04:44.1415329Z           ]
2026-06-22T02:04:44.1415625Z         }
2026-06-22T02:04:44.1415887Z       }
2026-06-22T02:04:44.1416207Z     },
2026-06-22T02:04:44.1416492Z     {
2026-06-22T02:04:44.1416807Z       "id": "REQ-API-2",
2026-06-22T02:04:44.1417379Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-22T02:04:44.1417946Z       "requiredStages": [
2026-06-22T02:04:44.1418294Z         "impl",
2026-06-22T02:04:44.1418599Z         "unit",
2026-06-22T02:04:44.1418903Z         "int"
2026-06-22T02:04:44.1419299Z       ],
2026-06-22T02:04:44.1419595Z       "stages": {
2026-06-22T02:04:44.1419904Z         "doc": {
2026-06-22T02:04:44.1420216Z           "complete": false,
2026-06-22T02:04:44.1420578Z           "evidence": []
2026-06-22T02:04:44.1420912Z         },
2026-06-22T02:04:44.1421203Z         "impl": {
2026-06-22T02:04:44.1421522Z           "complete": true,
2026-06-22T02:04:44.1421871Z           "evidence": [
2026-06-22T02:04:44.1422190Z             {
2026-06-22T02:04:44.1422548Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:04:44.1422986Z               "line": 17
2026-06-22T02:04:44.1423298Z             },
2026-06-22T02:04:44.1423600Z             {
2026-06-22T02:04:44.1424219Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.1424657Z               "line": 20
2026-06-22T02:04:44.1425000Z             },
2026-06-22T02:04:44.1425291Z             {
2026-06-22T02:04:44.1425650Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.1426251Z               "line": 142
2026-06-22T02:04:44.1426590Z             },
2026-06-22T02:04:44.1426880Z             {
2026-06-22T02:04:44.1427238Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1427652Z               "line": 24
2026-06-22T02:04:44.1427982Z             },
2026-06-22T02:04:44.1428285Z             {
2026-06-22T02:04:44.1428634Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1429135Z               "line": 41
2026-06-22T02:04:44.1429468Z             },
2026-06-22T02:04:44.1429774Z             {
2026-06-22T02:04:44.1430130Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1430549Z               "line": 213
2026-06-22T02:04:44.1430895Z             },
2026-06-22T02:04:44.1431191Z             {
2026-06-22T02:04:44.1431549Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1431983Z               "line": 255
2026-06-22T02:04:44.1432321Z             },
2026-06-22T02:04:44.1432618Z             {
2026-06-22T02:04:44.1432974Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1433412Z               "line": 334
2026-06-22T02:04:44.1433752Z             },
2026-06-22T02:04:44.1434058Z             {
2026-06-22T02:04:44.1434416Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1434855Z               "line": 397
2026-06-22T02:04:44.1435193Z             },
2026-06-22T02:04:44.1435494Z             {
2026-06-22T02:04:44.1435846Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1436277Z               "line": 436
2026-06-22T02:04:44.1436596Z             },
2026-06-22T02:04:44.1436901Z             {
2026-06-22T02:04:44.1437268Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.1437685Z               "line": 17
2026-06-22T02:04:44.1438023Z             },
2026-06-22T02:04:44.1438281Z             {
2026-06-22T02:04:44.1438499Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.1438789Z               "line": 30
2026-06-22T02:04:44.1439123Z             },
2026-06-22T02:04:44.1439329Z             {
2026-06-22T02:04:44.1439562Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.1439843Z               "line": 63
2026-06-22T02:04:44.1440062Z             },
2026-06-22T02:04:44.1440268Z             {
2026-06-22T02:04:44.1440506Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.1440782Z               "line": 77
2026-06-22T02:04:44.1441015Z             }
2026-06-22T02:04:44.1441224Z           ]
2026-06-22T02:04:44.1441422Z         },
2026-06-22T02:04:44.1441628Z         "int": {
2026-06-22T02:04:44.1441847Z           "complete": true,
2026-06-22T02:04:44.1442099Z           "evidence": [
2026-06-22T02:04:44.1442319Z             {
2026-06-22T02:04:44.1442571Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.1442853Z               "line": 14
2026-06-22T02:04:44.1443078Z             },
2026-06-22T02:04:44.1443287Z             {
2026-06-22T02:04:44.1443539Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.1443826Z               "line": 187
2026-06-22T02:04:44.1444049Z             }
2026-06-22T02:04:44.1444265Z           ]
2026-06-22T02:04:44.1444466Z         },
2026-06-22T02:04:44.1444666Z         "unit": {
2026-06-22T02:04:44.1444885Z           "complete": true,
2026-06-22T02:04:44.1445134Z           "evidence": [
2026-06-22T02:04:44.1445368Z             {
2026-06-22T02:04:44.1445625Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:04:44.1445920Z               "line": 82
2026-06-22T02:04:44.1446144Z             },
2026-06-22T02:04:44.1446355Z             {
2026-06-22T02:04:44.1446756Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.1447039Z               "line": 279
2026-06-22T02:04:44.1447272Z             },
2026-06-22T02:04:44.1447476Z             {
2026-06-22T02:04:44.1447724Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1448134Z               "line": 709
2026-06-22T02:04:44.1448377Z             },
2026-06-22T02:04:44.1448597Z             {
2026-06-22T02:04:44.1448860Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1449255Z               "line": 720
2026-06-22T02:04:44.1449477Z             },
2026-06-22T02:04:44.1449687Z             {
2026-06-22T02:04:44.1449931Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1450217Z               "line": 873
2026-06-22T02:04:44.1450441Z             },
2026-06-22T02:04:44.1450646Z             {
2026-06-22T02:04:44.1450889Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1451185Z               "line": 919
2026-06-22T02:04:44.1451434Z             },
2026-06-22T02:04:44.1451641Z             {
2026-06-22T02:04:44.1451892Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.1452179Z               "line": 143
2026-06-22T02:04:44.1452402Z             },
2026-06-22T02:04:44.1452602Z             {
2026-06-22T02:04:44.1452860Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.1453141Z               "line": 187
2026-06-22T02:04:44.1453366Z             }
2026-06-22T02:04:44.1453560Z           ]
2026-06-22T02:04:44.1453756Z         }
2026-06-22T02:04:44.1453953Z       }
2026-06-22T02:04:44.1454142Z     },
2026-06-22T02:04:44.1454339Z     {
2026-06-22T02:04:44.1454547Z       "id": "REQ-API-3",
2026-06-22T02:04:44.1454849Z       "title": "commune/signoff are file-drops, not commands",
2026-06-22T02:04:44.1455169Z       "requiredStages": [
2026-06-22T02:04:44.1455403Z         "impl",
2026-06-22T02:04:44.1455618Z         "unit",
2026-06-22T02:04:44.1455822Z         "int"
2026-06-22T02:04:44.1456022Z       ],
2026-06-22T02:04:44.1456224Z       "stages": {
2026-06-22T02:04:44.1456442Z         "doc": {
2026-06-22T02:04:44.1456680Z           "complete": false,
2026-06-22T02:04:44.1456930Z           "evidence": []
2026-06-22T02:04:44.1457142Z         },
2026-06-22T02:04:44.1457340Z         "impl": {
2026-06-22T02:04:44.1457560Z           "complete": true,
2026-06-22T02:04:44.1457803Z           "evidence": [
2026-06-22T02:04:44.1458021Z             {
2026-06-22T02:04:44.1458266Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.1458556Z               "line": 27
2026-06-22T02:04:44.1458781Z             },
2026-06-22T02:04:44.1459324Z             {
2026-06-22T02:04:44.1459682Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1460047Z               "line": 566
2026-06-22T02:04:44.1460487Z             }
2026-06-22T02:04:44.1460782Z           ]
2026-06-22T02:04:44.1461116Z         },
2026-06-22T02:04:44.1461402Z         "int": {
2026-06-22T02:04:44.1461721Z           "complete": true,
2026-06-22T02:04:44.1462154Z           "evidence": [
2026-06-22T02:04:44.1462462Z             {
2026-06-22T02:04:44.1462861Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.1463392Z               "line": 261
2026-06-22T02:04:44.1463768Z             }
2026-06-22T02:04:44.1464139Z           ]
2026-06-22T02:04:44.1464454Z         },
2026-06-22T02:04:44.1464789Z         "unit": {
2026-06-22T02:04:44.1498855Z           "complete": true,
2026-06-22T02:04:44.1499411Z           "evidence": [
2026-06-22T02:04:44.1499834Z             {
2026-06-22T02:04:44.1500290Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.1500825Z               "line": 280
2026-06-22T02:04:44.1501221Z             },
2026-06-22T02:04:44.1501588Z             {
2026-06-22T02:04:44.1502028Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.1502550Z               "line": 948
2026-06-22T02:04:44.1502961Z             }
2026-06-22T02:04:44.1503610Z           ]
2026-06-22T02:04:44.1503991Z         }
2026-06-22T02:04:44.1504348Z       }
2026-06-22T02:04:44.1504697Z     },
2026-06-22T02:04:44.1505050Z     {
2026-06-22T02:04:44.1505427Z       "id": "REQ-API-4",
2026-06-22T02:04:44.1509030Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-22T02:04:44.1511953Z       "requiredStages": [
2026-06-22T02:04:44.1512320Z         "doc",
2026-06-22T02:04:44.1512653Z         "impl",
2026-06-22T02:04:44.1512973Z         "unit"
2026-06-22T02:04:44.1513297Z       ],
2026-06-22T02:04:44.1513640Z       "stages": {
2026-06-22T02:04:44.1513974Z         "doc": {
2026-06-22T02:04:44.1514317Z           "complete": true,
2026-06-22T02:04:44.1514693Z           "evidence": [
2026-06-22T02:04:44.1515045Z             {
2026-06-22T02:04:44.1515396Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.1515793Z               "line": 149
2026-06-22T02:04:44.1516136Z             }
2026-06-22T02:04:44.1516455Z           ]
2026-06-22T02:04:44.1516760Z         },
2026-06-22T02:04:44.1517071Z         "impl": {
2026-06-22T02:04:44.1517409Z           "complete": true,
2026-06-22T02:04:44.1517785Z           "evidence": [
2026-06-22T02:04:44.1518144Z             {
2026-06-22T02:04:44.1518506Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1519040Z               "line": 484
2026-06-22T02:04:44.1519369Z             }
2026-06-22T02:04:44.1519688Z           ]
2026-06-22T02:04:44.1519980Z         },
2026-06-22T02:04:44.1520290Z         "int": {
2026-06-22T02:04:44.1520640Z           "complete": false,
2026-06-22T02:04:44.1521035Z           "evidence": []
2026-06-22T02:04:44.1521392Z         },
2026-06-22T02:04:44.1521687Z         "unit": {
2026-06-22T02:04:44.1522031Z           "complete": true,
2026-06-22T02:04:44.1522389Z           "evidence": [
2026-06-22T02:04:44.1522713Z             {
2026-06-22T02:04:44.1523062Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1523485Z               "line": 657
2026-06-22T02:04:44.1523814Z             },
2026-06-22T02:04:44.1524115Z             {
2026-06-22T02:04:44.1524467Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1524891Z               "line": 681
2026-06-22T02:04:44.1525230Z             },
2026-06-22T02:04:44.1525538Z             {
2026-06-22T02:04:44.1525898Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1526319Z               "line": 705
2026-06-22T02:04:44.1526648Z             }
2026-06-22T02:04:44.1526939Z           ]
2026-06-22T02:04:44.1527229Z         }
2026-06-22T02:04:44.1527530Z       }
2026-06-22T02:04:44.1527845Z     },
2026-06-22T02:04:44.1528044Z     {
2026-06-22T02:04:44.1528251Z       "id": "REQ-ARCH-1",
2026-06-22T02:04:44.1528535Z       "title": "Many small acyclically-layered crates",
2026-06-22T02:04:44.1528828Z       "requiredStages": [
2026-06-22T02:04:44.1529162Z         "impl"
2026-06-22T02:04:44.1529487Z       ],
2026-06-22T02:04:44.1529791Z       "stages": {
2026-06-22T02:04:44.1530106Z         "doc": {
2026-06-22T02:04:44.1530436Z           "complete": false,
2026-06-22T02:04:44.1530803Z           "evidence": []
2026-06-22T02:04:44.1531139Z         },
2026-06-22T02:04:44.1531442Z         "impl": {
2026-06-22T02:04:44.1531786Z           "complete": true,
2026-06-22T02:04:44.1532138Z           "evidence": [
2026-06-22T02:04:44.1532453Z             {
2026-06-22T02:04:44.1532806Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-22T02:04:44.1533240Z               "line": 18
2026-06-22T02:04:44.1533579Z             },
2026-06-22T02:04:44.1534055Z             {
2026-06-22T02:04:44.1534398Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-22T02:04:44.1534836Z               "line": 12
2026-06-22T02:04:44.1535170Z             },
2026-06-22T02:04:44.1535470Z             {
2026-06-22T02:04:44.1535823Z               "path": "crates/spt-store/src/lib.rs",
2026-06-22T02:04:44.1536407Z               "line": 12
2026-06-22T02:04:44.1536745Z             }
2026-06-22T02:04:44.1537055Z           ]
2026-06-22T02:04:44.1537345Z         },
2026-06-22T02:04:44.1537646Z         "int": {
2026-06-22T02:04:44.1537961Z           "complete": false,
2026-06-22T02:04:44.1538324Z           "evidence": []
2026-06-22T02:04:44.1538657Z         },
2026-06-22T02:04:44.1539028Z         "unit": {
2026-06-22T02:04:44.1539345Z           "complete": false,
2026-06-22T02:04:44.1539698Z           "evidence": []
2026-06-22T02:04:44.1540042Z         }
2026-06-22T02:04:44.1540332Z       }
2026-06-22T02:04:44.1540618Z     },
2026-06-22T02:04:44.1540904Z     {
2026-06-22T02:04:44.1541228Z       "id": "REQ-ARCH-2",
2026-06-22T02:04:44.1541733Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-22T02:04:44.1542127Z       "requiredStages": [
2026-06-22T02:04:44.1542361Z         "impl"
2026-06-22T02:04:44.1542565Z       ],
2026-06-22T02:04:44.1542766Z       "stages": {
2026-06-22T02:04:44.1542981Z         "doc": {
2026-06-22T02:04:44.1543208Z           "complete": false,
2026-06-22T02:04:44.1543442Z           "evidence": []
2026-06-22T02:04:44.1543658Z         },
2026-06-22T02:04:44.1543858Z         "impl": {
2026-06-22T02:04:44.1544072Z           "complete": true,
2026-06-22T02:04:44.1544292Z           "evidence": [
2026-06-22T02:04:44.1544510Z             {
2026-06-22T02:04:44.1544757Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-22T02:04:44.1545043Z               "line": 18
2026-06-22T02:04:44.1545258Z             }
2026-06-22T02:04:44.1545454Z           ]
2026-06-22T02:04:44.1545640Z         },
2026-06-22T02:04:44.1545832Z         "int": {
2026-06-22T02:04:44.1546054Z           "complete": false,
2026-06-22T02:04:44.1546288Z           "evidence": []
2026-06-22T02:04:44.1546504Z         },
2026-06-22T02:04:44.1546706Z         "unit": {
2026-06-22T02:04:44.1546919Z           "complete": false,
2026-06-22T02:04:44.1547148Z           "evidence": []
2026-06-22T02:04:44.1547372Z         }
2026-06-22T02:04:44.1547558Z       }
2026-06-22T02:04:44.1547750Z     },
2026-06-22T02:04:44.1547939Z     {
2026-06-22T02:04:44.1548145Z       "id": "REQ-ARCH-3",
2026-06-22T02:04:44.1548502Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-22T02:04:44.1548879Z       "requiredStages": [
2026-06-22T02:04:44.1549174Z         "impl",
2026-06-22T02:04:44.1549380Z         "unit"
2026-06-22T02:04:44.1549588Z       ],
2026-06-22T02:04:44.1549786Z       "stages": {
2026-06-22T02:04:44.1549992Z         "doc": {
2026-06-22T02:04:44.1550210Z           "complete": false,
2026-06-22T02:04:44.1550449Z           "evidence": []
2026-06-22T02:04:44.1550816Z         },
2026-06-22T02:04:44.1551107Z         "impl": {
2026-06-22T02:04:44.1551445Z           "complete": true,
2026-06-22T02:04:44.1551789Z           "evidence": [
2026-06-22T02:04:44.1552008Z             {
2026-06-22T02:04:44.1552250Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:04:44.1552558Z               "line": 34
2026-06-22T02:04:44.1552772Z             },
2026-06-22T02:04:44.1553086Z             {
2026-06-22T02:04:44.1553326Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:04:44.1553607Z               "line": 41
2026-06-22T02:04:44.1553813Z             }
2026-06-22T02:04:44.1554017Z           ]
2026-06-22T02:04:44.1554204Z         },
2026-06-22T02:04:44.1554394Z         "int": {
2026-06-22T02:04:44.1554603Z           "complete": false,
2026-06-22T02:04:44.1554838Z           "evidence": []
2026-06-22T02:04:44.1555055Z         },
2026-06-22T02:04:44.1555246Z         "unit": {
2026-06-22T02:04:44.1555466Z           "complete": true,
2026-06-22T02:04:44.1555999Z           "evidence": [
2026-06-22T02:04:44.1556219Z             {
2026-06-22T02:04:44.1556462Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:04:44.1556740Z               "line": 51
2026-06-22T02:04:44.1556949Z             },
2026-06-22T02:04:44.1557153Z             {
2026-06-22T02:04:44.1557508Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:04:44.1557794Z               "line": 71
2026-06-22T02:04:44.1558009Z             },
2026-06-22T02:04:44.1558204Z             {
2026-06-22T02:04:44.1558438Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:04:44.1558714Z               "line": 83
2026-06-22T02:04:44.1558934Z             }
2026-06-22T02:04:44.1559215Z           ]
2026-06-22T02:04:44.1559415Z         }
2026-06-22T02:04:44.1559612Z       }
2026-06-22T02:04:44.1559806Z     },
2026-06-22T02:04:44.1559987Z     {
2026-06-22T02:04:44.1560182Z       "id": "REQ-ARCH-4",
2026-06-22T02:04:44.1560504Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-22T02:04:44.1560857Z       "requiredStages": [
2026-06-22T02:04:44.1561085Z         "impl",
2026-06-22T02:04:44.1561300Z         "unit"
2026-06-22T02:04:44.1561496Z       ],
2026-06-22T02:04:44.1561691Z       "stages": {
2026-06-22T02:04:44.1561896Z         "doc": {
2026-06-22T02:04:44.1562111Z           "complete": false,
2026-06-22T02:04:44.1562354Z           "evidence": []
2026-06-22T02:04:44.1562596Z         },
2026-06-22T02:04:44.1562787Z         "impl": {
2026-06-22T02:04:44.1563003Z           "complete": true,
2026-06-22T02:04:44.1563247Z           "evidence": [
2026-06-22T02:04:44.1563462Z             {
2026-06-22T02:04:44.1563704Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1563990Z               "line": 165
2026-06-22T02:04:44.1564205Z             },
2026-06-22T02:04:44.1564406Z             {
2026-06-22T02:04:44.1564649Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1564939Z               "line": 188
2026-06-22T02:04:44.1565168Z             },
2026-06-22T02:04:44.1565365Z             {
2026-06-22T02:04:44.1565601Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1565872Z               "line": 208
2026-06-22T02:04:44.1566093Z             },
2026-06-22T02:04:44.1566303Z             {
2026-06-22T02:04:44.1566545Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1566821Z               "line": 223
2026-06-22T02:04:44.1567037Z             },
2026-06-22T02:04:44.1567228Z             {
2026-06-22T02:04:44.1567475Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1567751Z               "line": 273
2026-06-22T02:04:44.1567975Z             }
2026-06-22T02:04:44.1568177Z           ]
2026-06-22T02:04:44.1568373Z         },
2026-06-22T02:04:44.1568569Z         "int": {
2026-06-22T02:04:44.1568783Z           "complete": false,
2026-06-22T02:04:44.1569116Z           "evidence": []
2026-06-22T02:04:44.1569346Z         },
2026-06-22T02:04:44.1569552Z         "unit": {
2026-06-22T02:04:44.1569775Z           "complete": true,
2026-06-22T02:04:44.1570008Z           "evidence": [
2026-06-22T02:04:44.1570223Z             {
2026-06-22T02:04:44.1570468Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1570751Z               "line": 334
2026-06-22T02:04:44.1570964Z             },
2026-06-22T02:04:44.1571174Z             {
2026-06-22T02:04:44.1571412Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1571688Z               "line": 344
2026-06-22T02:04:44.1571898Z             },
2026-06-22T02:04:44.1572104Z             {
2026-06-22T02:04:44.1572342Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1572609Z               "line": 355
2026-06-22T02:04:44.1572827Z             },
2026-06-22T02:04:44.1573030Z             {
2026-06-22T02:04:44.1573270Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1573544Z               "line": 366
2026-06-22T02:04:44.1573887Z             },
2026-06-22T02:04:44.1574079Z             {
2026-06-22T02:04:44.1574327Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1574594Z               "line": 378
2026-06-22T02:04:44.1574808Z             },
2026-06-22T02:04:44.1575018Z             {
2026-06-22T02:04:44.1575366Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1575648Z               "line": 391
2026-06-22T02:04:44.1575863Z             },
2026-06-22T02:04:44.1576062Z             {
2026-06-22T02:04:44.1576296Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1576577Z               "line": 402
2026-06-22T02:04:44.1576800Z             },
2026-06-22T02:04:44.1576992Z             {
2026-06-22T02:04:44.1577239Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1577526Z               "line": 419
2026-06-22T02:04:44.1577749Z             },
2026-06-22T02:04:44.1577949Z             {
2026-06-22T02:04:44.1578198Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.1578487Z               "line": 547
2026-06-22T02:04:44.1578709Z             }
2026-06-22T02:04:44.1578919Z           ]
2026-06-22T02:04:44.1579186Z         }
2026-06-22T02:04:44.1579381Z       }
2026-06-22T02:04:44.1579577Z     },
2026-06-22T02:04:44.1579773Z     {
2026-06-22T02:04:44.1579982Z       "id": "REQ-CLI-1",
2026-06-22T02:04:44.1599711Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-22T02:04:44.1600978Z       "requiredStages": [
2026-06-22T02:04:44.1601208Z         "impl",
2026-06-22T02:04:44.1601426Z         "unit"
2026-06-22T02:04:44.1601636Z       ],
2026-06-22T02:04:44.1601857Z       "stages": {
2026-06-22T02:04:44.1602071Z         "doc": {
2026-06-22T02:04:44.1602289Z           "complete": false,
2026-06-22T02:04:44.1602531Z           "evidence": []
2026-06-22T02:04:44.1602749Z         },
2026-06-22T02:04:44.1602972Z         "impl": {
2026-06-22T02:04:44.1603231Z           "complete": true,
2026-06-22T02:04:44.1603489Z           "evidence": [
2026-06-22T02:04:44.1603712Z             {
2026-06-22T02:04:44.1603950Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1604227Z               "line": 225
2026-06-22T02:04:44.1604457Z             },
2026-06-22T02:04:44.1604652Z             {
2026-06-22T02:04:44.1604874Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1605140Z               "line": 1093
2026-06-22T02:04:44.1605373Z             },
2026-06-22T02:04:44.1605573Z             {
2026-06-22T02:04:44.1605798Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1606069Z               "line": 1720
2026-06-22T02:04:44.1606294Z             },
2026-06-22T02:04:44.1606474Z             {
2026-06-22T02:04:44.1606761Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1607032Z               "line": 3124
2026-06-22T02:04:44.1607267Z             }
2026-06-22T02:04:44.1607476Z           ]
2026-06-22T02:04:44.1607671Z         },
2026-06-22T02:04:44.1607875Z         "int": {
2026-06-22T02:04:44.1608089Z           "complete": false,
2026-06-22T02:04:44.1608329Z           "evidence": []
2026-06-22T02:04:44.1608549Z         },
2026-06-22T02:04:44.1608747Z         "unit": {
2026-06-22T02:04:44.1609034Z           "complete": true,
2026-06-22T02:04:44.1609268Z           "evidence": [
2026-06-22T02:04:44.1609478Z             {
2026-06-22T02:04:44.1609701Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1609978Z               "line": 7947
2026-06-22T02:04:44.1610196Z             }
2026-06-22T02:04:44.1610389Z           ]
2026-06-22T02:04:44.1610581Z         }
2026-06-22T02:04:44.1610771Z       }
2026-06-22T02:04:44.1611120Z     },
2026-06-22T02:04:44.1611310Z     {
2026-06-22T02:04:44.1611506Z       "id": "REQ-CLI-2",
2026-06-22T02:04:44.1612407Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-22T02:04:44.1613386Z       "requiredStages": [
2026-06-22T02:04:44.1613623Z         "impl",
2026-06-22T02:04:44.1613829Z         "unit"
2026-06-22T02:04:44.1614025Z       ],
2026-06-22T02:04:44.1614224Z       "stages": {
2026-06-22T02:04:44.1614424Z         "doc": {
2026-06-22T02:04:44.1614645Z           "complete": false,
2026-06-22T02:04:44.1614888Z           "evidence": []
2026-06-22T02:04:44.1615106Z         },
2026-06-22T02:04:44.1615303Z         "impl": {
2026-06-22T02:04:44.1615520Z           "complete": true,
2026-06-22T02:04:44.1615751Z           "evidence": [
2026-06-22T02:04:44.1615971Z             {
2026-06-22T02:04:44.1616205Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.1616520Z               "line": 414
2026-06-22T02:04:44.1616743Z             },
2026-06-22T02:04:44.1616944Z             {
2026-06-22T02:04:44.1617202Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:04:44.1617503Z               "line": 97
2026-06-22T02:04:44.1617711Z             },
2026-06-22T02:04:44.1617912Z             {
2026-06-22T02:04:44.1618161Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.1618440Z               "line": 256
2026-06-22T02:04:44.1618659Z             },
2026-06-22T02:04:44.1618851Z             {
2026-06-22T02:04:44.1619151Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1619433Z               "line": 434
2026-06-22T02:04:44.1619646Z             },
2026-06-22T02:04:44.1619846Z             {
2026-06-22T02:04:44.1620082Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1620362Z               "line": 1174
2026-06-22T02:04:44.1620580Z             },
2026-06-22T02:04:44.1620784Z             {
2026-06-22T02:04:44.1621007Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1621268Z               "line": 1958
2026-06-22T02:04:44.1621483Z             },
2026-06-22T02:04:44.1621671Z             {
2026-06-22T02:04:44.1621898Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1622170Z               "line": 2047
2026-06-22T02:04:44.1622394Z             },
2026-06-22T02:04:44.1622586Z             {
2026-06-22T02:04:44.1622795Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1623066Z               "line": 2108
2026-06-22T02:04:44.1623278Z             }
2026-06-22T02:04:44.1623471Z           ]
2026-06-22T02:04:44.1623665Z         },
2026-06-22T02:04:44.1623864Z         "int": {
2026-06-22T02:04:44.1624084Z           "complete": false,
2026-06-22T02:04:44.1624323Z           "evidence": []
2026-06-22T02:04:44.1624543Z         },
2026-06-22T02:04:44.1624751Z         "unit": {
2026-06-22T02:04:44.1624961Z           "complete": true,
2026-06-22T02:04:44.1625186Z           "evidence": [
2026-06-22T02:04:44.1625395Z             {
2026-06-22T02:04:44.1625633Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.1625929Z               "line": 338
2026-06-22T02:04:44.1626147Z             },
2026-06-22T02:04:44.1626345Z             {
2026-06-22T02:04:44.1626571Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1626842Z               "line": 8102
2026-06-22T02:04:44.1627060Z             }
2026-06-22T02:04:44.1627247Z           ]
2026-06-22T02:04:44.1627443Z         }
2026-06-22T02:04:44.1627647Z       }
2026-06-22T02:04:44.1627843Z     },
2026-06-22T02:04:44.1628034Z     {
2026-06-22T02:04:44.1628229Z       "id": "REQ-CLI-3",
2026-06-22T02:04:44.1629295Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-22T02:04:44.1630303Z       "requiredStages": [
2026-06-22T02:04:44.1630535Z         "impl",
2026-06-22T02:04:44.1630740Z         "unit"
2026-06-22T02:04:44.1630947Z       ],
2026-06-22T02:04:44.1631254Z       "stages": {
2026-06-22T02:04:44.1631462Z         "doc": {
2026-06-22T02:04:44.1631682Z           "complete": false,
2026-06-22T02:04:44.1631925Z           "evidence": []
2026-06-22T02:04:44.1632143Z         },
2026-06-22T02:04:44.1632340Z         "impl": {
2026-06-22T02:04:44.1632560Z           "complete": true,
2026-06-22T02:04:44.1632797Z           "evidence": [
2026-06-22T02:04:44.1633016Z             {
2026-06-22T02:04:44.1633250Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1633514Z               "line": 1087
2026-06-22T02:04:44.1633741Z             }
2026-06-22T02:04:44.1633941Z           ]
2026-06-22T02:04:44.1634136Z         },
2026-06-22T02:04:44.1634343Z         "int": {
2026-06-22T02:04:44.1634554Z           "complete": false,
2026-06-22T02:04:44.1634793Z           "evidence": []
2026-06-22T02:04:44.1635010Z         },
2026-06-22T02:04:44.1635212Z         "unit": {
2026-06-22T02:04:44.1635432Z           "complete": true,
2026-06-22T02:04:44.1635674Z           "evidence": [
2026-06-22T02:04:44.1635888Z             {
2026-06-22T02:04:44.1636113Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1636386Z               "line": 7912
2026-06-22T02:04:44.1636607Z             }
2026-06-22T02:04:44.1636806Z           ]
2026-06-22T02:04:44.1637006Z         }
2026-06-22T02:04:44.1637192Z       }
2026-06-22T02:04:44.1637388Z     },
2026-06-22T02:04:44.1637582Z     {
2026-06-22T02:04:44.1637778Z       "id": "REQ-CLI-4",
2026-06-22T02:04:44.1640253Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-22T02:04:44.1642194Z       "requiredStages": [],
2026-06-22T02:04:44.1642437Z       "stages": {
2026-06-22T02:04:44.1642641Z         "doc": {
2026-06-22T02:04:44.1642871Z           "complete": false,
2026-06-22T02:04:44.1643110Z           "evidence": []
2026-06-22T02:04:44.1643328Z         },
2026-06-22T02:04:44.1643524Z         "impl": {
2026-06-22T02:04:44.1643749Z           "complete": true,
2026-06-22T02:04:44.1643987Z           "evidence": [
2026-06-22T02:04:44.1644201Z             {
2026-06-22T02:04:44.1644427Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1644696Z               "line": 5678
2026-06-22T02:04:44.1644918Z             }
2026-06-22T02:04:44.1645114Z           ]
2026-06-22T02:04:44.1645314Z         },
2026-06-22T02:04:44.1645504Z         "int": {
2026-06-22T02:04:44.1645724Z           "complete": false,
2026-06-22T02:04:44.1645967Z           "evidence": []
2026-06-22T02:04:44.1646186Z         },
2026-06-22T02:04:44.1646477Z         "unit": {
2026-06-22T02:04:44.1647063Z           "complete": false,
2026-06-22T02:04:44.1647479Z           "evidence": []
2026-06-22T02:04:44.1647813Z         }
2026-06-22T02:04:44.1648114Z       }
2026-06-22T02:04:44.1648452Z     },
2026-06-22T02:04:44.1648734Z     {
2026-06-22T02:04:44.1649140Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-22T02:04:44.1652484Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-22T02:04:44.1655845Z       "requiredStages": [
2026-06-22T02:04:44.1656213Z         "impl",
2026-06-22T02:04:44.1656566Z         "unit"
2026-06-22T02:04:44.1656886Z       ],
2026-06-22T02:04:44.1657201Z       "stages": {
2026-06-22T02:04:44.1657535Z         "doc": {
2026-06-22T02:04:44.1657847Z           "complete": false,
2026-06-22T02:04:44.1658174Z           "evidence": []
2026-06-22T02:04:44.1658532Z         },
2026-06-22T02:04:44.1658884Z         "impl": {
2026-06-22T02:04:44.1659308Z           "complete": true,
2026-06-22T02:04:44.1659652Z           "evidence": [
2026-06-22T02:04:44.1659947Z             {
2026-06-22T02:04:44.1660330Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1660710Z               "line": 8
2026-06-22T02:04:44.1661034Z             },
2026-06-22T02:04:44.1661387Z             {
2026-06-22T02:04:44.1661702Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1662116Z               "line": 51
2026-06-22T02:04:44.1662435Z             },
2026-06-22T02:04:44.1662750Z             {
2026-06-22T02:04:44.1663109Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1663480Z               "line": 82
2026-06-22T02:04:44.1663819Z             },
2026-06-22T02:04:44.1664153Z             {
2026-06-22T02:04:44.1664487Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1664879Z               "line": 229
2026-06-22T02:04:44.1665184Z             }
2026-06-22T02:04:44.1665533Z           ]
2026-06-22T02:04:44.1665816Z         },
2026-06-22T02:04:44.1666085Z         "int": {
2026-06-22T02:04:44.1666954Z           "complete": false,
2026-06-22T02:04:44.1667311Z           "evidence": []
2026-06-22T02:04:44.1667655Z         },
2026-06-22T02:04:44.1667950Z         "unit": {
2026-06-22T02:04:44.1668245Z           "complete": true,
2026-06-22T02:04:44.1668628Z           "evidence": [
2026-06-22T02:04:44.1668924Z             {
2026-06-22T02:04:44.1669369Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1669749Z               "line": 249
2026-06-22T02:04:44.1670092Z             },
2026-06-22T02:04:44.1670431Z             {
2026-06-22T02:04:44.1670740Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1671145Z               "line": 256
2026-06-22T02:04:44.1671460Z             },
2026-06-22T02:04:44.1671755Z             {
2026-06-22T02:04:44.1672136Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1672647Z               "line": 263
2026-06-22T02:04:44.1673005Z             },
2026-06-22T02:04:44.1673305Z             {
2026-06-22T02:04:44.1673641Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1674050Z               "line": 270
2026-06-22T02:04:44.1674374Z             },
2026-06-22T02:04:44.1674661Z             {
2026-06-22T02:04:44.1675033Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1675444Z               "line": 297
2026-06-22T02:04:44.1675782Z             },
2026-06-22T02:04:44.1676088Z             {
2026-06-22T02:04:44.1676395Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1676837Z               "line": 307
2026-06-22T02:04:44.1677280Z             },
2026-06-22T02:04:44.1677600Z             {
2026-06-22T02:04:44.1677953Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1678330Z               "line": 317
2026-06-22T02:04:44.1678697Z             },
2026-06-22T02:04:44.1679066Z             {
2026-06-22T02:04:44.1679546Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1679929Z               "line": 331
2026-06-22T02:04:44.1680244Z             },
2026-06-22T02:04:44.1680563Z             {
2026-06-22T02:04:44.1680911Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1681310Z               "line": 340
2026-06-22T02:04:44.1681639Z             },
2026-06-22T02:04:44.1681944Z             {
2026-06-22T02:04:44.1682297Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1682659Z               "line": 348
2026-06-22T02:04:44.1682969Z             }
2026-06-22T02:04:44.1683322Z           ]
2026-06-22T02:04:44.1683651Z         }
2026-06-22T02:04:44.1683969Z       }
2026-06-22T02:04:44.1684267Z     },
2026-06-22T02:04:44.1684535Z     {
2026-06-22T02:04:44.1684878Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-22T02:04:44.1693286Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-22T02:04:44.1697633Z       "requiredStages": [
2026-06-22T02:04:44.1697967Z         "impl",
2026-06-22T02:04:44.1698319Z         "unit"
2026-06-22T02:04:44.1698629Z       ],
2026-06-22T02:04:44.1699015Z       "stages": {
2026-06-22T02:04:44.1699359Z         "doc": {
2026-06-22T02:04:44.1699684Z           "complete": false,
2026-06-22T02:04:44.1700101Z           "evidence": []
2026-06-22T02:04:44.1700424Z         },
2026-06-22T02:04:44.1700730Z         "impl": {
2026-06-22T02:04:44.1701077Z           "complete": true,
2026-06-22T02:04:44.1701411Z           "evidence": [
2026-06-22T02:04:44.1701773Z             {
2026-06-22T02:04:44.1702111Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.1702570Z               "line": 141
2026-06-22T02:04:44.1702912Z             },
2026-06-22T02:04:44.1703202Z             {
2026-06-22T02:04:44.1703575Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1703943Z               "line": 1376
2026-06-22T02:04:44.1704238Z             },
2026-06-22T02:04:44.1704591Z             {
2026-06-22T02:04:44.1704943Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1705354Z               "line": 2145
2026-06-22T02:04:44.1705655Z             },
2026-06-22T02:04:44.1705942Z             {
2026-06-22T02:04:44.1707300Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1707839Z               "line": 4368
2026-06-22T02:04:44.1708184Z             },
2026-06-22T02:04:44.1708484Z             {
2026-06-22T02:04:44.1708832Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1709318Z               "line": 4466
2026-06-22T02:04:44.1709648Z             },
2026-06-22T02:04:44.1710077Z             {
2026-06-22T02:04:44.1710424Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1710784Z               "line": 5257
2026-06-22T02:04:44.1711131Z             },
2026-06-22T02:04:44.1711423Z             {
2026-06-22T02:04:44.1711798Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1712195Z               "line": 39
2026-06-22T02:04:44.1712515Z             }
2026-06-22T02:04:44.1712854Z           ]
2026-06-22T02:04:44.1713130Z         },
2026-06-22T02:04:44.1713400Z         "int": {
2026-06-22T02:04:44.1713772Z           "complete": false,
2026-06-22T02:04:44.1714131Z           "evidence": []
2026-06-22T02:04:44.1714493Z         },
2026-06-22T02:04:44.1714788Z         "unit": {
2026-06-22T02:04:44.1715075Z           "complete": true,
2026-06-22T02:04:44.1715471Z           "evidence": [
2026-06-22T02:04:44.1715779Z             {
2026-06-22T02:04:44.1773696Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1774445Z               "line": 10272
2026-06-22T02:04:44.1774907Z             },
2026-06-22T02:04:44.1775242Z             {
2026-06-22T02:04:44.1775595Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1775981Z               "line": 281
2026-06-22T02:04:44.1776220Z             },
2026-06-22T02:04:44.1776428Z             {
2026-06-22T02:04:44.1776667Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1776963Z               "line": 358
2026-06-22T02:04:44.1777190Z             },
2026-06-22T02:04:44.1777390Z             {
2026-06-22T02:04:44.1777658Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1777948Z               "line": 381
2026-06-22T02:04:44.1778193Z             },
2026-06-22T02:04:44.1778401Z             {
2026-06-22T02:04:44.1778640Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:04:44.1778901Z               "line": 395
2026-06-22T02:04:44.1779757Z             }
2026-06-22T02:04:44.1779957Z           ]
2026-06-22T02:04:44.1780148Z         }
2026-06-22T02:04:44.1780339Z       }
2026-06-22T02:04:44.1780534Z     },
2026-06-22T02:04:44.1780731Z     {
2026-06-22T02:04:44.1780939Z       "id": "REQ-CONSENT-1",
2026-06-22T02:04:44.1782016Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-22T02:04:44.1783078Z       "requiredStages": [
2026-06-22T02:04:44.1783316Z         "impl",
2026-06-22T02:04:44.1783520Z         "unit"
2026-06-22T02:04:44.1783730Z       ],
2026-06-22T02:04:44.1783932Z       "stages": {
2026-06-22T02:04:44.1784145Z         "doc": {
2026-06-22T02:04:44.1784369Z           "complete": false,
2026-06-22T02:04:44.1784620Z           "evidence": []
2026-06-22T02:04:44.1784838Z         },
2026-06-22T02:04:44.1785039Z         "impl": {
2026-06-22T02:04:44.1785263Z           "complete": true,
2026-06-22T02:04:44.1785492Z           "evidence": [
2026-06-22T02:04:44.1785710Z             {
2026-06-22T02:04:44.1785968Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1786259Z               "line": 27
2026-06-22T02:04:44.1786479Z             },
2026-06-22T02:04:44.1786683Z             {
2026-06-22T02:04:44.1786926Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1787203Z               "line": 75
2026-06-22T02:04:44.1787417Z             },
2026-06-22T02:04:44.1787616Z             {
2026-06-22T02:04:44.1787856Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1788503Z               "line": 98
2026-06-22T02:04:44.1788714Z             },
2026-06-22T02:04:44.1788928Z             {
2026-06-22T02:04:44.1789300Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1789585Z               "line": 82
2026-06-22T02:04:44.1789802Z             },
2026-06-22T02:04:44.1790169Z             {
2026-06-22T02:04:44.1790403Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1790680Z               "line": 109
2026-06-22T02:04:44.1790899Z             },
2026-06-22T02:04:44.1791109Z             {
2026-06-22T02:04:44.1791356Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1791625Z               "line": 127
2026-06-22T02:04:44.1791833Z             },
2026-06-22T02:04:44.1792033Z             {
2026-06-22T02:04:44.1792269Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1792533Z               "line": 142
2026-06-22T02:04:44.1792755Z             },
2026-06-22T02:04:44.1792956Z             {
2026-06-22T02:04:44.1793185Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1793456Z               "line": 7048
2026-06-22T02:04:44.1793675Z             }
2026-06-22T02:04:44.1793871Z           ]
2026-06-22T02:04:44.1794071Z         },
2026-06-22T02:04:44.1794271Z         "int": {
2026-06-22T02:04:44.1794497Z           "complete": false,
2026-06-22T02:04:44.1794740Z           "evidence": []
2026-06-22T02:04:44.1794967Z         },
2026-06-22T02:04:44.1795162Z         "unit": {
2026-06-22T02:04:44.1795379Z           "complete": true,
2026-06-22T02:04:44.1795613Z           "evidence": [
2026-06-22T02:04:44.1795833Z             {
2026-06-22T02:04:44.1796076Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1796362Z               "line": 334
2026-06-22T02:04:44.1796585Z             },
2026-06-22T02:04:44.1796786Z             {
2026-06-22T02:04:44.1797030Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1797301Z               "line": 380
2026-06-22T02:04:44.1797520Z             },
2026-06-22T02:04:44.1797721Z             {
2026-06-22T02:04:44.1797943Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1798219Z               "line": 391
2026-06-22T02:04:44.1798435Z             },
2026-06-22T02:04:44.1798631Z             {
2026-06-22T02:04:44.1798892Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1799270Z               "line": 165
2026-06-22T02:04:44.1799493Z             },
2026-06-22T02:04:44.1799684Z             {
2026-06-22T02:04:44.1799919Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1800193Z               "line": 184
2026-06-22T02:04:44.1800410Z             },
2026-06-22T02:04:44.1800611Z             {
2026-06-22T02:04:44.1800849Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:04:44.1801125Z               "line": 204
2026-06-22T02:04:44.1801340Z             },
2026-06-22T02:04:44.1801541Z             {
2026-06-22T02:04:44.1801769Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1802036Z               "line": 8334
2026-06-22T02:04:44.1802250Z             }
2026-06-22T02:04:44.1802438Z           ]
2026-06-22T02:04:44.1802627Z         }
2026-06-22T02:04:44.1802829Z       }
2026-06-22T02:04:44.1803012Z     },
2026-06-22T02:04:44.1803211Z     {
2026-06-22T02:04:44.1803420Z       "id": "REQ-CONSENT-2",
2026-06-22T02:04:44.1804436Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-22T02:04:44.1805414Z       "requiredStages": [
2026-06-22T02:04:44.1805650Z         "impl",
2026-06-22T02:04:44.1805863Z         "unit"
2026-06-22T02:04:44.1806064Z       ],
2026-06-22T02:04:44.1806264Z       "stages": {
2026-06-22T02:04:44.1806607Z         "doc": {
2026-06-22T02:04:44.1806826Z           "complete": false,
2026-06-22T02:04:44.1807069Z           "evidence": []
2026-06-22T02:04:44.1807285Z         },
2026-06-22T02:04:44.1807489Z         "impl": {
2026-06-22T02:04:44.1807703Z           "complete": true,
2026-06-22T02:04:44.1807943Z           "evidence": [
2026-06-22T02:04:44.1808267Z             {
2026-06-22T02:04:44.1808508Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1808789Z               "line": 140
2026-06-22T02:04:44.1809108Z             },
2026-06-22T02:04:44.1809315Z             {
2026-06-22T02:04:44.1809553Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1809839Z               "line": 165
2026-06-22T02:04:44.1810062Z             },
2026-06-22T02:04:44.1810272Z             {
2026-06-22T02:04:44.1810517Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1810796Z               "line": 199
2026-06-22T02:04:44.1811017Z             },
2026-06-22T02:04:44.1811215Z             {
2026-06-22T02:04:44.1811442Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1811729Z               "line": 241
2026-06-22T02:04:44.1811952Z             },
2026-06-22T02:04:44.1812144Z             {
2026-06-22T02:04:44.1812378Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1812673Z               "line": 269
2026-06-22T02:04:44.1812892Z             },
2026-06-22T02:04:44.1813093Z             {
2026-06-22T02:04:44.1813322Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1813591Z               "line": 300
2026-06-22T02:04:44.1813814Z             },
2026-06-22T02:04:44.1814014Z             {
2026-06-22T02:04:44.1814242Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1814514Z               "line": 6839
2026-06-22T02:04:44.1814734Z             },
2026-06-22T02:04:44.1814939Z             {
2026-06-22T02:04:44.1815167Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1815453Z               "line": 6897
2026-06-22T02:04:44.1815673Z             }
2026-06-22T02:04:44.1815879Z           ]
2026-06-22T02:04:44.1816077Z         },
2026-06-22T02:04:44.1816278Z         "int": {
2026-06-22T02:04:44.1816499Z           "complete": false,
2026-06-22T02:04:44.1816742Z           "evidence": []
2026-06-22T02:04:44.1816972Z         },
2026-06-22T02:04:44.1817172Z         "unit": {
2026-06-22T02:04:44.1817395Z           "complete": true,
2026-06-22T02:04:44.1817629Z           "evidence": [
2026-06-22T02:04:44.1817850Z             {
2026-06-22T02:04:44.1818097Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1818378Z               "line": 419
2026-06-22T02:04:44.1818597Z             },
2026-06-22T02:04:44.1818794Z             {
2026-06-22T02:04:44.1819131Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1819412Z               "line": 436
2026-06-22T02:04:44.1819636Z             },
2026-06-22T02:04:44.1819875Z             {
2026-06-22T02:04:44.1820118Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1820400Z               "line": 472
2026-06-22T02:04:44.1820618Z             },
2026-06-22T02:04:44.1820814Z             {
2026-06-22T02:04:44.1821048Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.1821332Z               "line": 516
2026-06-22T02:04:44.1821549Z             },
2026-06-22T02:04:44.1821755Z             {
2026-06-22T02:04:44.1821974Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1822245Z               "line": 9614
2026-06-22T02:04:44.1822503Z             },
2026-06-22T02:04:44.1822718Z             {
2026-06-22T02:04:44.1822947Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1823209Z               "line": 9696
2026-06-22T02:04:44.1823423Z             }
2026-06-22T02:04:44.1823624Z           ]
2026-06-22T02:04:44.1823829Z         }
2026-06-22T02:04:44.1824019Z       }
2026-06-22T02:04:44.1824204Z     },
2026-06-22T02:04:44.1824512Z     {
2026-06-22T02:04:44.1824717Z       "id": "REQ-CONSENT-3",
2026-06-22T02:04:44.1826866Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-22T02:04:44.1828725Z       "requiredStages": [
2026-06-22T02:04:44.1829035Z         "doc",
2026-06-22T02:04:44.1829263Z         "impl",
2026-06-22T02:04:44.1829476Z         "unit",
2026-06-22T02:04:44.1829681Z         "int"
2026-06-22T02:04:44.1829881Z       ],
2026-06-22T02:04:44.1830087Z       "stages": {
2026-06-22T02:04:44.1830292Z         "doc": {
2026-06-22T02:04:44.1830515Z           "complete": true,
2026-06-22T02:04:44.1830754Z           "evidence": [
2026-06-22T02:04:44.1830960Z             {
2026-06-22T02:04:44.1831178Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.1831435Z               "line": 304
2026-06-22T02:04:44.1831660Z             }
2026-06-22T02:04:44.1831864Z           ]
2026-06-22T02:04:44.1832052Z         },
2026-06-22T02:04:44.1832257Z         "impl": {
2026-06-22T02:04:44.1832486Z           "complete": true,
2026-06-22T02:04:44.1832715Z           "evidence": [
2026-06-22T02:04:44.1832930Z             {
2026-06-22T02:04:44.1833169Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.1833469Z               "line": 123
2026-06-22T02:04:44.1833688Z             },
2026-06-22T02:04:44.1833884Z             {
2026-06-22T02:04:44.1834118Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.1834399Z               "line": 162
2026-06-22T02:04:44.1834626Z             },
2026-06-22T02:04:44.1834826Z             {
2026-06-22T02:04:44.1835067Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.1835358Z               "line": 291
2026-06-22T02:04:44.1835573Z             },
2026-06-22T02:04:44.1835769Z             {
2026-06-22T02:04:44.1836030Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.1836326Z               "line": 574
2026-06-22T02:04:44.1836550Z             },
2026-06-22T02:04:44.1836747Z             {
2026-06-22T02:04:44.1836995Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.1837292Z               "line": 824
2026-06-22T02:04:44.1837514Z             },
2026-06-22T02:04:44.1837716Z             {
2026-06-22T02:04:44.1837944Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1838225Z               "line": 6965
2026-06-22T02:04:44.1838450Z             }
2026-06-22T02:04:44.1838646Z           ]
2026-06-22T02:04:44.1838845Z         },
2026-06-22T02:04:44.1839131Z         "int": {
2026-06-22T02:04:44.1839346Z           "complete": true,
2026-06-22T02:04:44.1839580Z           "evidence": [
2026-06-22T02:04:44.1839794Z             {
2026-06-22T02:04:44.1840046Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T02:04:44.1840351Z               "line": 16
2026-06-22T02:04:44.1840576Z             }
2026-06-22T02:04:44.1840780Z           ]
2026-06-22T02:04:44.1840971Z         },
2026-06-22T02:04:44.1841167Z         "unit": {
2026-06-22T02:04:44.1841375Z           "complete": true,
2026-06-22T02:04:44.1841609Z           "evidence": [
2026-06-22T02:04:44.1841830Z             {
2026-06-22T02:04:44.1842077Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.1842371Z               "line": 1019
2026-06-22T02:04:44.1842589Z             },
2026-06-22T02:04:44.1842794Z             {
2026-06-22T02:04:44.1843041Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.1843448Z               "line": 1066
2026-06-22T02:04:44.1843665Z             },
2026-06-22T02:04:44.1843862Z             {
2026-06-22T02:04:44.1844115Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.1844406Z               "line": 1394
2026-06-22T02:04:44.1844624Z             }
2026-06-22T02:04:44.1844939Z           ]
2026-06-22T02:04:44.1845139Z         }
2026-06-22T02:04:44.1845329Z       }
2026-06-22T02:04:44.1845518Z     },
2026-06-22T02:04:44.1845709Z     {
2026-06-22T02:04:44.1845937Z       "id": "REQ-CONV-1",
2026-06-22T02:04:44.1847477Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-22T02:04:44.1848843Z       "requiredStages": [
2026-06-22T02:04:44.1849168Z         "impl",
2026-06-22T02:04:44.1849376Z         "unit"
2026-06-22T02:04:44.1849592Z       ],
2026-06-22T02:04:44.1849787Z       "stages": {
2026-06-22T02:04:44.1849997Z         "doc": {
2026-06-22T02:04:44.1850221Z           "complete": false,
2026-06-22T02:04:44.1850465Z           "evidence": []
2026-06-22T02:04:44.1850687Z         },
2026-06-22T02:04:44.1850893Z         "impl": {
2026-06-22T02:04:44.1851106Z           "complete": true,
2026-06-22T02:04:44.1851345Z           "evidence": [
2026-06-22T02:04:44.1851570Z             {
2026-06-22T02:04:44.1851822Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1852128Z               "line": 938
2026-06-22T02:04:44.1852347Z             },
2026-06-22T02:04:44.1852541Z             {
2026-06-22T02:04:44.1852790Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.1853093Z               "line": 94
2026-06-22T02:04:44.1853316Z             },
2026-06-22T02:04:44.1853511Z             {
2026-06-22T02:04:44.1853759Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.1854064Z               "line": 345
2026-06-22T02:04:44.1854284Z             },
2026-06-22T02:04:44.1854493Z             {
2026-06-22T02:04:44.1854732Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.1855018Z               "line": 387
2026-06-22T02:04:44.1855233Z             },
2026-06-22T02:04:44.1855437Z             {
2026-06-22T02:04:44.1855676Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.1855965Z               "line": 472
2026-06-22T02:04:44.1856192Z             },
2026-06-22T02:04:44.1856393Z             {
2026-06-22T02:04:44.1856636Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1856927Z               "line": 667
2026-06-22T02:04:44.1857146Z             },
2026-06-22T02:04:44.1857337Z             {
2026-06-22T02:04:44.1857580Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1857871Z               "line": 693
2026-06-22T02:04:44.1858100Z             },
2026-06-22T02:04:44.1858304Z             {
2026-06-22T02:04:44.1858555Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.1858851Z               "line": 369
2026-06-22T02:04:44.1859645Z             },
2026-06-22T02:04:44.1859860Z             {
2026-06-22T02:04:44.1867173Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:04:44.1867516Z               "line": 19
2026-06-22T02:04:44.1867745Z             }
2026-06-22T02:04:44.1867944Z           ]
2026-06-22T02:04:44.1868168Z         },
2026-06-22T02:04:44.1868370Z         "int": {
2026-06-22T02:04:44.1868588Z           "complete": false,
2026-06-22T02:04:44.1868826Z           "evidence": []
2026-06-22T02:04:44.1869148Z         },
2026-06-22T02:04:44.1869358Z         "unit": {
2026-06-22T02:04:44.1869576Z           "complete": true,
2026-06-22T02:04:44.1869992Z           "evidence": [
2026-06-22T02:04:44.1870210Z             {
2026-06-22T02:04:44.1870459Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1870750Z               "line": 1263
2026-06-22T02:04:44.1870970Z             },
2026-06-22T02:04:44.1871280Z             {
2026-06-22T02:04:44.1871533Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:04:44.1871821Z               "line": 108
2026-06-22T02:04:44.1872037Z             },
2026-06-22T02:04:44.1872237Z             {
2026-06-22T02:04:44.1872469Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:04:44.1872751Z               "line": 134
2026-06-22T02:04:44.1872961Z             },
2026-06-22T02:04:44.1873152Z             {
2026-06-22T02:04:44.1873390Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:04:44.1873671Z               "line": 144
2026-06-22T02:04:44.1873887Z             }
2026-06-22T02:04:44.1874089Z           ]
2026-06-22T02:04:44.1874293Z         }
2026-06-22T02:04:44.1874474Z       }
2026-06-22T02:04:44.1874659Z     },
2026-06-22T02:04:44.1874851Z     {
2026-06-22T02:04:44.1875055Z       "id": "REQ-CONV-2",
2026-06-22T02:04:44.1876373Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-22T02:04:44.1877475Z       "requiredStages": [
2026-06-22T02:04:44.1877704Z         "impl",
2026-06-22T02:04:44.1877904Z         "unit"
2026-06-22T02:04:44.1878110Z       ],
2026-06-22T02:04:44.1878300Z       "stages": {
2026-06-22T02:04:44.1878509Z         "doc": {
2026-06-22T02:04:44.1878714Z           "complete": false,
2026-06-22T02:04:44.1879029Z           "evidence": []
2026-06-22T02:04:44.1879335Z         },
2026-06-22T02:04:44.1879533Z         "impl": {
2026-06-22T02:04:44.1879751Z           "complete": true,
2026-06-22T02:04:44.1879990Z           "evidence": [
2026-06-22T02:04:44.1880213Z             {
2026-06-22T02:04:44.1880460Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1880761Z               "line": 409
2026-06-22T02:04:44.1880971Z             },
2026-06-22T02:04:44.1881177Z             {
2026-06-22T02:04:44.1881433Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.1881729Z               "line": 119
2026-06-22T02:04:44.1881948Z             },
2026-06-22T02:04:44.1882146Z             {
2026-06-22T02:04:44.1882400Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.1882691Z               "line": 841
2026-06-22T02:04:44.1882907Z             },
2026-06-22T02:04:44.1883103Z             {
2026-06-22T02:04:44.1883354Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.1883640Z               "line": 852
2026-06-22T02:04:44.1883860Z             },
2026-06-22T02:04:44.1884057Z             {
2026-06-22T02:04:44.1884293Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.1884569Z               "line": 334
2026-06-22T02:04:44.1884788Z             },
2026-06-22T02:04:44.1884991Z             {
2026-06-22T02:04:44.1885219Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1885487Z               "line": 3074
2026-06-22T02:04:44.1885707Z             },
2026-06-22T02:04:44.1885906Z             {
2026-06-22T02:04:44.1886122Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1886393Z               "line": 3090
2026-06-22T02:04:44.1886618Z             },
2026-06-22T02:04:44.1886813Z             {
2026-06-22T02:04:44.1887033Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1887315Z               "line": 3170
2026-06-22T02:04:44.1887531Z             }
2026-06-22T02:04:44.1887730Z           ]
2026-06-22T02:04:44.1888049Z         },
2026-06-22T02:04:44.1888241Z         "int": {
2026-06-22T02:04:44.1888464Z           "complete": false,
2026-06-22T02:04:44.1888698Z           "evidence": []
2026-06-22T02:04:44.1888913Z         },
2026-06-22T02:04:44.1889219Z         "unit": {
2026-06-22T02:04:44.1889456Z           "complete": true,
2026-06-22T02:04:44.1889895Z           "evidence": [
2026-06-22T02:04:44.1890108Z             {
2026-06-22T02:04:44.1890358Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1890649Z               "line": 889
2026-06-22T02:04:44.1890864Z             },
2026-06-22T02:04:44.1891059Z             {
2026-06-22T02:04:44.1891292Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1891574Z               "line": 1014
2026-06-22T02:04:44.1891790Z             },
2026-06-22T02:04:44.1891989Z             {
2026-06-22T02:04:44.1892251Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.1892532Z               "line": 215
2026-06-22T02:04:44.1892762Z             }
2026-06-22T02:04:44.1892955Z           ]
2026-06-22T02:04:44.1893147Z         }
2026-06-22T02:04:44.1893347Z       }
2026-06-22T02:04:44.1893538Z     },
2026-06-22T02:04:44.1893724Z     {
2026-06-22T02:04:44.1893924Z       "id": "REQ-DAEMON-1",
2026-06-22T02:04:44.1894243Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-22T02:04:44.1894583Z       "requiredStages": [
2026-06-22T02:04:44.1894811Z         "impl",
2026-06-22T02:04:44.1895016Z         "unit",
2026-06-22T02:04:44.1895215Z         "int"
2026-06-22T02:04:44.1895423Z       ],
2026-06-22T02:04:44.1895618Z       "stages": {
2026-06-22T02:04:44.1895818Z         "doc": {
2026-06-22T02:04:44.1896024Z           "complete": false,
2026-06-22T02:04:44.1896267Z           "evidence": []
2026-06-22T02:04:44.1896486Z         },
2026-06-22T02:04:44.1896677Z         "impl": {
2026-06-22T02:04:44.1896892Z           "complete": true,
2026-06-22T02:04:44.1897125Z           "evidence": [
2026-06-22T02:04:44.1897344Z             {
2026-06-22T02:04:44.1897588Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.1897875Z               "line": 229
2026-06-22T02:04:44.1898091Z             },
2026-06-22T02:04:44.1898290Z             {
2026-06-22T02:04:44.1898529Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.1898815Z               "line": 12
2026-06-22T02:04:44.1899125Z             },
2026-06-22T02:04:44.1899333Z             {
2026-06-22T02:04:44.1899573Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1899858Z               "line": 16
2026-06-22T02:04:44.1900064Z             },
2026-06-22T02:04:44.1900259Z             {
2026-06-22T02:04:44.1900497Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1900782Z               "line": 309
2026-06-22T02:04:44.1900995Z             },
2026-06-22T02:04:44.1901195Z             {
2026-06-22T02:04:44.1901429Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1901706Z               "line": 24
2026-06-22T02:04:44.1901919Z             },
2026-06-22T02:04:44.1902110Z             {
2026-06-22T02:04:44.1902345Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1902622Z               "line": 262
2026-06-22T02:04:44.1902835Z             },
2026-06-22T02:04:44.1903040Z             {
2026-06-22T02:04:44.1903266Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1903545Z               "line": 279
2026-06-22T02:04:44.1903759Z             },
2026-06-22T02:04:44.1903951Z             {
2026-06-22T02:04:44.1904194Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1904469Z               "line": 356
2026-06-22T02:04:44.1904675Z             },
2026-06-22T02:04:44.1904877Z             {
2026-06-22T02:04:44.1905113Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1905400Z               "line": 670
2026-06-22T02:04:44.1905614Z             },
2026-06-22T02:04:44.1905922Z             {
2026-06-22T02:04:44.1906164Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:04:44.1906435Z               "line": 15
2026-06-22T02:04:44.1906650Z             },
2026-06-22T02:04:44.1906842Z             {
2026-06-22T02:04:44.1907075Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.1907443Z               "line": 241
2026-06-22T02:04:44.1907665Z             },
2026-06-22T02:04:44.1907862Z             {
2026-06-22T02:04:44.1908096Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T02:04:44.1908363Z               "line": 13
2026-06-22T02:04:44.1908580Z             },
2026-06-22T02:04:44.1908775Z             {
2026-06-22T02:04:44.1909103Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.1909390Z               "line": 382
2026-06-22T02:04:44.1909608Z             },
2026-06-22T02:04:44.1909804Z             {
2026-06-22T02:04:44.1910038Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.1910310Z               "line": 494
2026-06-22T02:04:44.1910528Z             }
2026-06-22T02:04:44.1910729Z           ]
2026-06-22T02:04:44.1910911Z         },
2026-06-22T02:04:44.1911114Z         "int": {
2026-06-22T02:04:44.1911338Z           "complete": true,
2026-06-22T02:04:44.1911579Z           "evidence": [
2026-06-22T02:04:44.1911793Z             {
2026-06-22T02:04:44.1912088Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T02:04:44.1912417Z               "line": 2
2026-06-22T02:04:44.1912619Z             },
2026-06-22T02:04:44.1912823Z             {
2026-06-22T02:04:44.1913114Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T02:04:44.1913434Z               "line": 16
2026-06-22T02:04:44.1913657Z             },
2026-06-22T02:04:44.1913855Z             {
2026-06-22T02:04:44.1914115Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-22T02:04:44.1914414Z               "line": 12
2026-06-22T02:04:44.1914629Z             },
2026-06-22T02:04:44.1914821Z             {
2026-06-22T02:04:44.1915078Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-22T02:04:44.1915378Z               "line": 12
2026-06-22T02:04:44.1915588Z             },
2026-06-22T02:04:44.1915794Z             {
2026-06-22T02:04:44.1916056Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:04:44.1916345Z               "line": 44
2026-06-22T02:04:44.1916562Z             }
2026-06-22T02:04:44.1916763Z           ]
2026-06-22T02:04:44.1916947Z         },
2026-06-22T02:04:44.1917144Z         "unit": {
2026-06-22T02:04:44.1917369Z           "complete": true,
2026-06-22T02:04:44.1917606Z           "evidence": [
2026-06-22T02:04:44.1917821Z             {
2026-06-22T02:04:44.1918055Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.1918346Z               "line": 285
2026-06-22T02:04:44.1918555Z             },
2026-06-22T02:04:44.1918750Z             {
2026-06-22T02:04:44.1919074Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.1919373Z               "line": 293
2026-06-22T02:04:44.1919587Z             },
2026-06-22T02:04:44.1919782Z             {
2026-06-22T02:04:44.1920016Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.1920302Z               "line": 309
2026-06-22T02:04:44.1920521Z             },
2026-06-22T02:04:44.1920717Z             {
2026-06-22T02:04:44.1920941Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.1921228Z               "line": 317
2026-06-22T02:04:44.1921432Z             },
2026-06-22T02:04:44.1921632Z             {
2026-06-22T02:04:44.1921874Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1922167Z               "line": 659
2026-06-22T02:04:44.1922386Z             },
2026-06-22T02:04:44.1922588Z             {
2026-06-22T02:04:44.1922831Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1923255Z               "line": 729
2026-06-22T02:04:44.1923475Z             },
2026-06-22T02:04:44.1923674Z             {
2026-06-22T02:04:44.1923913Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1924203Z               "line": 1211
2026-06-22T02:04:44.1924424Z             },
2026-06-22T02:04:44.1924713Z             {
2026-06-22T02:04:44.1924965Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1925246Z               "line": 1248
2026-06-22T02:04:44.1925467Z             },
2026-06-22T02:04:44.1925657Z             {
2026-06-22T02:04:44.1925900Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1926181Z               "line": 1271
2026-06-22T02:04:44.1926401Z             },
2026-06-22T02:04:44.1926607Z             {
2026-06-22T02:04:44.1926843Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1927127Z               "line": 1300
2026-06-22T02:04:44.1927352Z             },
2026-06-22T02:04:44.1927561Z             {
2026-06-22T02:04:44.1927794Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1928075Z               "line": 1348
2026-06-22T02:04:44.1928300Z             },
2026-06-22T02:04:44.1928500Z             {
2026-06-22T02:04:44.1928734Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.1929120Z               "line": 1391
2026-06-22T02:04:44.1929353Z             },
2026-06-22T02:04:44.1929560Z             {
2026-06-22T02:04:44.1929796Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:04:44.1930074Z               "line": 106
2026-06-22T02:04:44.1930285Z             },
2026-06-22T02:04:44.1930486Z             {
2026-06-22T02:04:44.1930718Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:04:44.1930986Z               "line": 132
2026-06-22T02:04:44.1931200Z             },
2026-06-22T02:04:44.1931401Z             {
2026-06-22T02:04:44.1931634Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.1931920Z               "line": 530
2026-06-22T02:04:44.1932136Z             }
2026-06-22T02:04:44.1932334Z           ]
2026-06-22T02:04:44.1932528Z         }
2026-06-22T02:04:44.1932723Z       }
2026-06-22T02:04:44.1932908Z     },
2026-06-22T02:04:44.1933105Z     {
2026-06-22T02:04:44.1933319Z       "id": "REQ-DAEMON-2",
2026-06-22T02:04:44.1933605Z       "title": "Broker/brain split for seamless self-update",
2026-06-22T02:04:44.1933920Z       "requiredStages": [
2026-06-22T02:04:44.1934139Z         "impl",
2026-06-22T02:04:44.1934340Z         "unit",
2026-06-22T02:04:44.1934549Z         "int"
2026-06-22T02:04:44.1934744Z       ],
2026-06-22T02:04:44.1934946Z       "stages": {
2026-06-22T02:04:44.1935154Z         "doc": {
2026-06-22T02:04:44.1935370Z           "complete": true,
2026-06-22T02:04:44.1935607Z           "evidence": [
2026-06-22T02:04:44.1935826Z             {
2026-06-22T02:04:44.1936074Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-22T02:04:44.1936360Z               "line": 250
2026-06-22T02:04:44.1936571Z             }
2026-06-22T02:04:44.1936765Z           ]
2026-06-22T02:04:44.1936961Z         },
2026-06-22T02:04:44.1937157Z         "impl": {
2026-06-22T02:04:44.1937370Z           "complete": true,
2026-06-22T02:04:44.1937607Z           "evidence": [
2026-06-22T02:04:44.1937825Z             {
2026-06-22T02:04:44.1938059Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.1938335Z               "line": 23
2026-06-22T02:04:44.1938555Z             },
2026-06-22T02:04:44.1938756Z             {
2026-06-22T02:04:44.1939123Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.1939404Z               "line": 922
2026-06-22T02:04:44.1939618Z             },
2026-06-22T02:04:44.1939819Z             {
2026-06-22T02:04:44.1940053Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.1940332Z               "line": 963
2026-06-22T02:04:44.1940554Z             },
2026-06-22T02:04:44.1940741Z             {
2026-06-22T02:04:44.1941094Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.1941375Z               "line": 1199
2026-06-22T02:04:44.1941593Z             },
2026-06-22T02:04:44.1941789Z             {
2026-06-22T02:04:44.1942028Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.1942423Z               "line": 32
2026-06-22T02:04:44.1942635Z             },
2026-06-22T02:04:44.1942832Z             {
2026-06-22T02:04:44.1943069Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.1943346Z               "line": 1151
2026-06-22T02:04:44.1943564Z             },
2026-06-22T02:04:44.1943750Z             {
2026-06-22T02:04:44.1943975Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.1944256Z               "line": 1865
2026-06-22T02:04:44.1944480Z             },
2026-06-22T02:04:44.1944680Z             {
2026-06-22T02:04:44.1944924Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.1945215Z               "line": 2152
2026-06-22T02:04:44.1945429Z             },
2026-06-22T02:04:44.1945624Z             {
2026-06-22T02:04:44.1945867Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:04:44.1946144Z               "line": 11
2026-06-22T02:04:44.1946362Z             },
2026-06-22T02:04:44.1950178Z             {
2026-06-22T02:04:44.1950488Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.1950788Z               "line": 153
2026-06-22T02:04:44.1951007Z             },
2026-06-22T02:04:44.1951209Z             {
2026-06-22T02:04:44.1951443Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.1951716Z               "line": 343
2026-06-22T02:04:44.1951940Z             },
2026-06-22T02:04:44.1952139Z             {
2026-06-22T02:04:44.1952378Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.1952654Z               "line": 13
2026-06-22T02:04:44.1952875Z             },
2026-06-22T02:04:44.1953074Z             {
2026-06-22T02:04:44.1953321Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1953596Z               "line": 27
2026-06-22T02:04:44.1953805Z             },
2026-06-22T02:04:44.1954005Z             {
2026-06-22T02:04:44.1954244Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1954530Z               "line": 147
2026-06-22T02:04:44.1954750Z             },
2026-06-22T02:04:44.1954945Z             {
2026-06-22T02:04:44.1955174Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1955456Z               "line": 632
2026-06-22T02:04:44.1955669Z             },
2026-06-22T02:04:44.1955869Z             {
2026-06-22T02:04:44.1956090Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1956369Z               "line": 853
2026-06-22T02:04:44.1956593Z             },
2026-06-22T02:04:44.1956794Z             {
2026-06-22T02:04:44.1957033Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1957323Z               "line": 1000
2026-06-22T02:04:44.1957547Z             },
2026-06-22T02:04:44.1957739Z             {
2026-06-22T02:04:44.1957973Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1958253Z               "line": 1089
2026-06-22T02:04:44.1958480Z             },
2026-06-22T02:04:44.1958686Z             {
2026-06-22T02:04:44.1958927Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1959304Z               "line": 1211
2026-06-22T02:04:44.1959522Z             },
2026-06-22T02:04:44.1959719Z             {
2026-06-22T02:04:44.1959871Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:04:44.1959976Z               "line": 10
2026-06-22T02:04:44.1960081Z             }
2026-06-22T02:04:44.1960180Z           ]
2026-06-22T02:04:44.1960282Z         },
2026-06-22T02:04:44.1960381Z         "int": {
2026-06-22T02:04:44.1960491Z           "complete": true,
2026-06-22T02:04:44.1960592Z           "evidence": [
2026-06-22T02:04:44.1960845Z             {
2026-06-22T02:04:44.1960991Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.1961096Z               "line": 17
2026-06-22T02:04:44.1961197Z             },
2026-06-22T02:04:44.1961297Z             {
2026-06-22T02:04:44.1961452Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:04:44.1961656Z               "line": 90
2026-06-22T02:04:44.1961755Z             },
2026-06-22T02:04:44.1961856Z             {
2026-06-22T02:04:44.1962008Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:04:44.1962123Z               "line": 110
2026-06-22T02:04:44.1962228Z             },
2026-06-22T02:04:44.1962327Z             {
2026-06-22T02:04:44.1962476Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:04:44.1962586Z               "line": 186
2026-06-22T02:04:44.1962685Z             },
2026-06-22T02:04:44.1962781Z             {
2026-06-22T02:04:44.1962934Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:04:44.1963047Z               "line": 309
2026-06-22T02:04:44.1963149Z             },
2026-06-22T02:04:44.1963252Z             {
2026-06-22T02:04:44.1963392Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T02:04:44.1963506Z               "line": 128
2026-06-22T02:04:44.1963610Z             },
2026-06-22T02:04:44.1963712Z             {
2026-06-22T02:04:44.1963863Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:04:44.1963971Z               "line": 59
2026-06-22T02:04:44.1964077Z             }
2026-06-22T02:04:44.1964175Z           ]
2026-06-22T02:04:44.1964279Z         },
2026-06-22T02:04:44.1964379Z         "unit": {
2026-06-22T02:04:44.1964486Z           "complete": true,
2026-06-22T02:04:44.1964584Z           "evidence": [
2026-06-22T02:04:44.1964689Z             {
2026-06-22T02:04:44.1964833Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:04:44.1964937Z               "line": 62
2026-06-22T02:04:44.1965048Z             },
2026-06-22T02:04:44.1965153Z             {
2026-06-22T02:04:44.1965290Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:04:44.1965400Z               "line": 76
2026-06-22T02:04:44.1965491Z             },
2026-06-22T02:04:44.1965586Z             {
2026-06-22T02:04:44.1965729Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:04:44.1965829Z               "line": 88
2026-06-22T02:04:44.1965939Z             },
2026-06-22T02:04:44.1966039Z             {
2026-06-22T02:04:44.1966177Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.1966283Z               "line": 347
2026-06-22T02:04:44.1966387Z             },
2026-06-22T02:04:44.1966482Z             {
2026-06-22T02:04:44.1966622Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.1966730Z               "line": 901
2026-06-22T02:04:44.1966820Z             },
2026-06-22T02:04:44.1966924Z             {
2026-06-22T02:04:44.1967059Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.1967172Z               "line": 909
2026-06-22T02:04:44.1967268Z             },
2026-06-22T02:04:44.1967359Z             {
2026-06-22T02:04:44.1967496Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.1967603Z               "line": 926
2026-06-22T02:04:44.1967712Z             },
2026-06-22T02:04:44.1967816Z             {
2026-06-22T02:04:44.1967946Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.1968045Z               "line": 1035
2026-06-22T02:04:44.1968154Z             },
2026-06-22T02:04:44.1968256Z             {
2026-06-22T02:04:44.1968398Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1968499Z               "line": 1282
2026-06-22T02:04:44.1968599Z             },
2026-06-22T02:04:44.1968703Z             {
2026-06-22T02:04:44.1968842Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.1969050Z               "line": 1294
2026-06-22T02:04:44.1969544Z             },
2026-06-22T02:04:44.1969673Z             {
2026-06-22T02:04:44.1969888Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:04:44.1970025Z               "line": 110
2026-06-22T02:04:44.1970146Z             },
2026-06-22T02:04:44.1970264Z             {
2026-06-22T02:04:44.1970687Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:04:44.1970822Z               "line": 145
2026-06-22T02:04:44.1970941Z             }
2026-06-22T02:04:44.1971065Z           ]
2026-06-22T02:04:44.1971180Z         }
2026-06-22T02:04:44.1971304Z       }
2026-06-22T02:04:44.1971419Z     },
2026-06-22T02:04:44.1971537Z     {
2026-06-22T02:04:44.1971676Z       "id": "REQ-DAEMON-3",
2026-06-22T02:04:44.1971908Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-22T02:04:44.1972037Z       "requiredStages": [
2026-06-22T02:04:44.1972164Z         "impl",
2026-06-22T02:04:44.1972291Z         "unit",
2026-06-22T02:04:44.1972411Z         "int"
2026-06-22T02:04:44.1972535Z       ],
2026-06-22T02:04:44.1972663Z       "stages": {
2026-06-22T02:04:44.1972783Z         "doc": {
2026-06-22T02:04:44.1972916Z           "complete": false,
2026-06-22T02:04:44.1973046Z           "evidence": []
2026-06-22T02:04:44.1973170Z         },
2026-06-22T02:04:44.1973293Z         "impl": {
2026-06-22T02:04:44.1973427Z           "complete": true,
2026-06-22T02:04:44.1973555Z           "evidence": [
2026-06-22T02:04:44.1973680Z             {
2026-06-22T02:04:44.1973874Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.1974005Z               "line": 14
2026-06-22T02:04:44.1974127Z             },
2026-06-22T02:04:44.1974238Z             {
2026-06-22T02:04:44.1974423Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:04:44.1974560Z               "line": 11
2026-06-22T02:04:44.1974680Z             },
2026-06-22T02:04:44.1974806Z             {
2026-06-22T02:04:44.1974964Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.1975097Z               "line": 305
2026-06-22T02:04:44.1975226Z             },
2026-06-22T02:04:44.1975341Z             {
2026-06-22T02:04:44.1975497Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1975627Z               "line": 1956
2026-06-22T02:04:44.1975750Z             },
2026-06-22T02:04:44.1975875Z             {
2026-06-22T02:04:44.1976036Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1976169Z               "line": 4235
2026-06-22T02:04:44.1976285Z             },
2026-06-22T02:04:44.1976403Z             {
2026-06-22T02:04:44.1976552Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1976684Z               "line": 4256
2026-06-22T02:04:44.1976799Z             }
2026-06-22T02:04:44.1976924Z           ]
2026-06-22T02:04:44.1977042Z         },
2026-06-22T02:04:44.1977158Z         "int": {
2026-06-22T02:04:44.1977295Z           "complete": true,
2026-06-22T02:04:44.1977417Z           "evidence": [
2026-06-22T02:04:44.1977538Z             {
2026-06-22T02:04:44.1977714Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.1977838Z               "line": 49
2026-06-22T02:04:44.1977957Z             },
2026-06-22T02:04:44.1978071Z             {
2026-06-22T02:04:44.1978243Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.1978372Z               "line": 487
2026-06-22T02:04:44.1978497Z             }
2026-06-22T02:04:44.1978615Z           ]
2026-06-22T02:04:44.1978734Z         },
2026-06-22T02:04:44.1978859Z         "unit": {
2026-06-22T02:04:44.1979073Z           "complete": true,
2026-06-22T02:04:44.1979211Z           "evidence": [
2026-06-22T02:04:44.1979325Z             {
2026-06-22T02:04:44.1979507Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.1979634Z               "line": 1553
2026-06-22T02:04:44.1979754Z             },
2026-06-22T02:04:44.1979880Z             {
2026-06-22T02:04:44.1980018Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.1980275Z               "line": 10715
2026-06-22T02:04:44.1980400Z             }
2026-06-22T02:04:44.1980528Z           ]
2026-06-22T02:04:44.1980633Z         }
2026-06-22T02:04:44.1980748Z       }
2026-06-22T02:04:44.1980871Z     },
2026-06-22T02:04:44.1980972Z     {
2026-06-22T02:04:44.1981096Z       "id": "REQ-DAEMON-4",
2026-06-22T02:04:44.1981397Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-22T02:04:44.1981530Z       "requiredStages": [
2026-06-22T02:04:44.1981645Z         "impl",
2026-06-22T02:04:44.1981773Z         "unit",
2026-06-22T02:04:44.1981883Z         "int"
2026-06-22T02:04:44.1981994Z       ],
2026-06-22T02:04:44.1982106Z       "stages": {
2026-06-22T02:04:44.1982197Z         "doc": {
2026-06-22T02:04:44.1982304Z           "complete": false,
2026-06-22T02:04:44.1982407Z           "evidence": []
2026-06-22T02:04:44.1982501Z         },
2026-06-22T02:04:44.1982606Z         "impl": {
2026-06-22T02:04:44.1982715Z           "complete": true,
2026-06-22T02:04:44.1982818Z           "evidence": [
2026-06-22T02:04:44.1982924Z             {
2026-06-22T02:04:44.1983072Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1983176Z               "line": 464
2026-06-22T02:04:44.1983282Z             },
2026-06-22T02:04:44.1983382Z             {
2026-06-22T02:04:44.1983519Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1983625Z               "line": 529
2026-06-22T02:04:44.1983725Z             },
2026-06-22T02:04:44.1983819Z             {
2026-06-22T02:04:44.1983959Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1984068Z               "line": 551
2026-06-22T02:04:44.1984163Z             }
2026-06-22T02:04:44.1984264Z           ]
2026-06-22T02:04:44.1984363Z         },
2026-06-22T02:04:44.1984459Z         "int": {
2026-06-22T02:04:44.1984569Z           "complete": true,
2026-06-22T02:04:44.1984678Z           "evidence": [
2026-06-22T02:04:44.1984769Z             {
2026-06-22T02:04:44.1984927Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T02:04:44.1985035Z               "line": 42
2026-06-22T02:04:44.1985139Z             }
2026-06-22T02:04:44.1985230Z           ]
2026-06-22T02:04:44.1985324Z         },
2026-06-22T02:04:44.1985423Z         "unit": {
2026-06-22T02:04:44.1985528Z           "complete": true,
2026-06-22T02:04:44.1985634Z           "evidence": [
2026-06-22T02:04:44.1985738Z             {
2026-06-22T02:04:44.1985877Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.1985986Z               "line": 428
2026-06-22T02:04:44.1986090Z             },
2026-06-22T02:04:44.1986187Z             {
2026-06-22T02:04:44.1986338Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1986445Z               "line": 957
2026-06-22T02:04:44.1986544Z             },
2026-06-22T02:04:44.1986649Z             {
2026-06-22T02:04:44.1986778Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1986892Z               "line": 1027
2026-06-22T02:04:44.1986992Z             },
2026-06-22T02:04:44.1987093Z             {
2026-06-22T02:04:44.1987244Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1987350Z               "line": 1057
2026-06-22T02:04:44.1987451Z             },
2026-06-22T02:04:44.1987536Z             {
2026-06-22T02:04:44.1987684Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.1987790Z               "line": 1090
2026-06-22T02:04:44.1987897Z             }
2026-06-22T02:04:44.1987996Z           ]
2026-06-22T02:04:44.1988088Z         }
2026-06-22T02:04:44.1988216Z       }
2026-06-22T02:04:44.1988311Z     },
2026-06-22T02:04:44.1988418Z     {
2026-06-22T02:04:44.1988522Z       "id": "REQ-DAEMON-5",
2026-06-22T02:04:44.1990053Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-22T02:04:44.1990294Z       "requiredStages": [
2026-06-22T02:04:44.1990398Z         "impl",
2026-06-22T02:04:44.1990607Z         "unit"
2026-06-22T02:04:44.1990698Z       ],
2026-06-22T02:04:44.1990803Z       "stages": {
2026-06-22T02:04:44.1990908Z         "doc": {
2026-06-22T02:04:44.1991018Z           "complete": false,
2026-06-22T02:04:44.1991126Z           "evidence": []
2026-06-22T02:04:44.1991227Z         },
2026-06-22T02:04:44.1991337Z         "impl": {
2026-06-22T02:04:44.1991446Z           "complete": true,
2026-06-22T02:04:44.1991551Z           "evidence": [
2026-06-22T02:04:44.1991656Z             {
2026-06-22T02:04:44.1991808Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1991915Z               "line": 476
2026-06-22T02:04:44.1992014Z             },
2026-06-22T02:04:44.1992123Z             {
2026-06-22T02:04:44.1992267Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1992376Z               "line": 769
2026-06-22T02:04:44.1992476Z             },
2026-06-22T02:04:44.1992573Z             {
2026-06-22T02:04:44.1992714Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1992830Z               "line": 782
2026-06-22T02:04:44.1992935Z             },
2026-06-22T02:04:44.1993033Z             {
2026-06-22T02:04:44.1993176Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1993275Z               "line": 800
2026-06-22T02:04:44.1993374Z             },
2026-06-22T02:04:44.1993479Z             {
2026-06-22T02:04:44.1993618Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1993717Z               "line": 841
2026-06-22T02:04:44.1993828Z             }
2026-06-22T02:04:44.1993923Z           ]
2026-06-22T02:04:44.1994027Z         },
2026-06-22T02:04:44.1994123Z         "int": {
2026-06-22T02:04:44.1994233Z           "complete": false,
2026-06-22T02:04:44.1994342Z           "evidence": []
2026-06-22T02:04:44.1994437Z         },
2026-06-22T02:04:44.1994538Z         "unit": {
2026-06-22T02:04:44.1994638Z           "complete": true,
2026-06-22T02:04:44.1994747Z           "evidence": [
2026-06-22T02:04:44.1994853Z             {
2026-06-22T02:04:44.1995000Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1995111Z               "line": 1189
2026-06-22T02:04:44.1995210Z             },
2026-06-22T02:04:44.1995315Z             {
2026-06-22T02:04:44.1995454Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1995567Z               "line": 1213
2026-06-22T02:04:44.1995666Z             },
2026-06-22T02:04:44.1995766Z             {
2026-06-22T02:04:44.1995908Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.1996021Z               "line": 1239
2026-06-22T02:04:44.1996123Z             }
2026-06-22T02:04:44.1996222Z           ]
2026-06-22T02:04:44.1996322Z         }
2026-06-22T02:04:44.1996414Z       }
2026-06-22T02:04:44.1996519Z     },
2026-06-22T02:04:44.1996617Z     {
2026-06-22T02:04:44.1996728Z       "id": "REQ-DAEMON-6",
2026-06-22T02:04:44.1998763Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-22T02:04:44.1998891Z       "requiredStages": [
2026-06-22T02:04:44.1999054Z         "impl",
2026-06-22T02:04:44.1999278Z         "unit"
2026-06-22T02:04:44.1999368Z       ],
2026-06-22T02:04:44.1999472Z       "stages": {
2026-06-22T02:04:44.1999574Z         "doc": {
2026-06-22T02:04:44.1999683Z           "complete": false,
2026-06-22T02:04:44.1999782Z           "evidence": []
2026-06-22T02:04:44.1999889Z         },
2026-06-22T02:04:44.2000107Z         "impl": {
2026-06-22T02:04:44.2000213Z           "complete": true,
2026-06-22T02:04:44.2000322Z           "evidence": [
2026-06-22T02:04:44.2000421Z             {
2026-06-22T02:04:44.2000571Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2000674Z               "line": 495
2026-06-22T02:04:44.2000778Z             },
2026-06-22T02:04:44.2000883Z             {
2026-06-22T02:04:44.2001024Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2001133Z               "line": 526
2026-06-22T02:04:44.2001234Z             },
2026-06-22T02:04:44.2001324Z             {
2026-06-22T02:04:44.2001477Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2001583Z               "line": 55
2026-06-22T02:04:44.2001686Z             },
2026-06-22T02:04:44.2001787Z             {
2026-06-22T02:04:44.2001940Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2002049Z               "line": 70
2026-06-22T02:04:44.2002155Z             },
2026-06-22T02:04:44.2002264Z             {
2026-06-22T02:04:44.2002397Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2002512Z               "line": 2020
2026-06-22T02:04:44.2002612Z             },
2026-06-22T02:04:44.2002716Z             {
2026-06-22T02:04:44.2002846Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2002955Z               "line": 2046
2026-06-22T02:04:44.2003051Z             }
2026-06-22T02:04:44.2003152Z           ]
2026-06-22T02:04:44.2003246Z         },
2026-06-22T02:04:44.2003342Z         "int": {
2026-06-22T02:04:44.2003457Z           "complete": false,
2026-06-22T02:04:44.2003570Z           "evidence": []
2026-06-22T02:04:44.2003678Z         },
2026-06-22T02:04:44.2003784Z         "unit": {
2026-06-22T02:04:44.2003901Z           "complete": true,
2026-06-22T02:04:44.2004000Z           "evidence": [
2026-06-22T02:04:44.2004101Z             {
2026-06-22T02:04:44.2004249Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2004349Z               "line": 288
2026-06-22T02:04:44.2004459Z             },
2026-06-22T02:04:44.2004558Z             {
2026-06-22T02:04:44.2004708Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2004817Z               "line": 299
2026-06-22T02:04:44.2004921Z             },
2026-06-22T02:04:44.2005017Z             {
2026-06-22T02:04:44.2005150Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2005255Z               "line": 325
2026-06-22T02:04:44.2005356Z             },
2026-06-22T02:04:44.2005465Z             {
2026-06-22T02:04:44.2005608Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2005718Z               "line": 351
2026-06-22T02:04:44.2005827Z             }
2026-06-22T02:04:44.2005928Z           ]
2026-06-22T02:04:44.2006033Z         }
2026-06-22T02:04:44.2006127Z       }
2026-06-22T02:04:44.2006226Z     },
2026-06-22T02:04:44.2006322Z     {
2026-06-22T02:04:44.2006430Z       "id": "REQ-DAEMON-7",
2026-06-22T02:04:44.2007865Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-22T02:04:44.2007984Z       "requiredStages": [
2026-06-22T02:04:44.2008075Z         "impl",
2026-06-22T02:04:44.2008179Z         "unit"
2026-06-22T02:04:44.2008399Z       ],
2026-06-22T02:04:44.2008504Z       "stages": {
2026-06-22T02:04:44.2008605Z         "doc": {
2026-06-22T02:04:44.2008713Z           "complete": false,
2026-06-22T02:04:44.2008814Z           "evidence": []
2026-06-22T02:04:44.2008920Z         },
2026-06-22T02:04:44.2009113Z         "impl": {
2026-06-22T02:04:44.2009328Z           "complete": true,
2026-06-22T02:04:44.2009442Z           "evidence": [
2026-06-22T02:04:44.2009538Z             {
2026-06-22T02:04:44.2009694Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2009795Z               "line": 545
2026-06-22T02:04:44.2009900Z             },
2026-06-22T02:04:44.2010000Z             {
2026-06-22T02:04:44.2010143Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2010252Z               "line": 610
2026-06-22T02:04:44.2010352Z             },
2026-06-22T02:04:44.2010454Z             {
2026-06-22T02:04:44.2010595Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2010700Z               "line": 89
2026-06-22T02:04:44.2010802Z             },
2026-06-22T02:04:44.2010901Z             {
2026-06-22T02:04:44.2011035Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2011136Z               "line": 1957
2026-06-22T02:04:44.2011239Z             }
2026-06-22T02:04:44.2011348Z           ]
2026-06-22T02:04:44.2011443Z         },
2026-06-22T02:04:44.2011547Z         "int": {
2026-06-22T02:04:44.2011660Z           "complete": false,
2026-06-22T02:04:44.2011780Z           "evidence": []
2026-06-22T02:04:44.2011880Z         },
2026-06-22T02:04:44.2011975Z         "unit": {
2026-06-22T02:04:44.2012085Z           "complete": true,
2026-06-22T02:04:44.2012195Z           "evidence": [
2026-06-22T02:04:44.2012294Z             {
2026-06-22T02:04:44.2012434Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2012547Z               "line": 314
2026-06-22T02:04:44.2012647Z             },
2026-06-22T02:04:44.2012744Z             {
2026-06-22T02:04:44.2012881Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2012981Z               "line": 8102
2026-06-22T02:04:44.2013082Z             }
2026-06-22T02:04:44.2013186Z           ]
2026-06-22T02:04:44.2013291Z         }
2026-06-22T02:04:44.2013383Z       }
2026-06-22T02:04:44.2013477Z     },
2026-06-22T02:04:44.2013582Z     {
2026-06-22T02:04:44.2013689Z       "id": "REQ-DAEMON-8",
2026-06-22T02:04:44.2014690Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-22T02:04:44.2014809Z       "requiredStages": [
2026-06-22T02:04:44.2014914Z         "impl",
2026-06-22T02:04:44.2015010Z         "unit"
2026-06-22T02:04:44.2015114Z       ],
2026-06-22T02:04:44.2015219Z       "stages": {
2026-06-22T02:04:44.2015320Z         "doc": {
2026-06-22T02:04:44.2015443Z           "complete": false,
2026-06-22T02:04:44.2015548Z           "evidence": []
2026-06-22T02:04:44.2015653Z         },
2026-06-22T02:04:44.2015767Z         "impl": {
2026-06-22T02:04:44.2015878Z           "complete": true,
2026-06-22T02:04:44.2015978Z           "evidence": [
2026-06-22T02:04:44.2016087Z             {
2026-06-22T02:04:44.2016241Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2016344Z               "line": 445
2026-06-22T02:04:44.2016450Z             },
2026-06-22T02:04:44.2016556Z             {
2026-06-22T02:04:44.2016692Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2016796Z               "line": 56
2026-06-22T02:04:44.2016896Z             }
2026-06-22T02:04:44.2016999Z           ]
2026-06-22T02:04:44.2017098Z         },
2026-06-22T02:04:44.2017205Z         "int": {
2026-06-22T02:04:44.2017319Z           "complete": false,
2026-06-22T02:04:44.2017427Z           "evidence": []
2026-06-22T02:04:44.2017634Z         },
2026-06-22T02:04:44.2017733Z         "unit": {
2026-06-22T02:04:44.2017848Z           "complete": true,
2026-06-22T02:04:44.2017958Z           "evidence": [
2026-06-22T02:04:44.2018052Z             {
2026-06-22T02:04:44.2018196Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2018372Z               "line": 288
2026-06-22T02:04:44.2018478Z             },
2026-06-22T02:04:44.2018577Z             {
2026-06-22T02:04:44.2018720Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:04:44.2018826Z               "line": 325
2026-06-22T02:04:44.2018934Z             }
2026-06-22T02:04:44.2019098Z           ]
2026-06-22T02:04:44.2019197Z         }
2026-06-22T02:04:44.2019298Z       }
2026-06-22T02:04:44.2019399Z     },
2026-06-22T02:04:44.2019494Z     {
2026-06-22T02:04:44.2019606Z       "id": "REQ-DAEMON-9",
2026-06-22T02:04:44.2021946Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-22T02:04:44.2022084Z       "requiredStages": [
2026-06-22T02:04:44.2022192Z         "impl",
2026-06-22T02:04:44.2022288Z         "unit"
2026-06-22T02:04:44.2022383Z       ],
2026-06-22T02:04:44.2022478Z       "stages": {
2026-06-22T02:04:44.2022583Z         "doc": {
2026-06-22T02:04:44.2022684Z           "complete": false,
2026-06-22T02:04:44.2022802Z           "evidence": []
2026-06-22T02:04:44.2022932Z         },
2026-06-22T02:04:44.2023027Z         "impl": {
2026-06-22T02:04:44.2023140Z           "complete": true,
2026-06-22T02:04:44.2023247Z           "evidence": [
2026-06-22T02:04:44.2023356Z             {
2026-06-22T02:04:44.2023518Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2023633Z               "line": 276
2026-06-22T02:04:44.2023738Z             },
2026-06-22T02:04:44.2023842Z             {
2026-06-22T02:04:44.2023985Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2024094Z               "line": 1202
2026-06-22T02:04:44.2024196Z             },
2026-06-22T02:04:44.2024300Z             {
2026-06-22T02:04:44.2024438Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2024544Z               "line": 197
2026-06-22T02:04:44.2024643Z             },
2026-06-22T02:04:44.2024757Z             {
2026-06-22T02:04:44.2024895Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2025007Z               "line": 344
2026-06-22T02:04:44.2025116Z             },
2026-06-22T02:04:44.2025207Z             {
2026-06-22T02:04:44.2025340Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2025450Z               "line": 381
2026-06-22T02:04:44.2025560Z             },
2026-06-22T02:04:44.2025664Z             {
2026-06-22T02:04:44.2025803Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2025908Z               "line": 2075
2026-06-22T02:04:44.2026007Z             }
2026-06-22T02:04:44.2026108Z           ]
2026-06-22T02:04:44.2026213Z         },
2026-06-22T02:04:44.2026318Z         "int": {
2026-06-22T02:04:44.2026428Z           "complete": false,
2026-06-22T02:04:44.2026542Z           "evidence": []
2026-06-22T02:04:44.2026642Z         },
2026-06-22T02:04:44.2026738Z         "unit": {
2026-06-22T02:04:44.2026862Z           "complete": true,
2026-06-22T02:04:44.2026971Z           "evidence": [
2026-06-22T02:04:44.2027182Z             {
2026-06-22T02:04:44.2027323Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2027423Z               "line": 1158
2026-06-22T02:04:44.2027531Z             },
2026-06-22T02:04:44.2027631Z             {
2026-06-22T02:04:44.2027755Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2027950Z               "line": 10580
2026-06-22T02:04:44.2028055Z             }
2026-06-22T02:04:44.2028151Z           ]
2026-06-22T02:04:44.2028255Z         }
2026-06-22T02:04:44.2028356Z       }
2026-06-22T02:04:44.2028456Z     },
2026-06-22T02:04:44.2028556Z     {
2026-06-22T02:04:44.2028666Z       "id": "REQ-DOCS-1",
2026-06-22T02:04:44.2028889Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-22T02:04:44.2029067Z       "requiredStages": [
2026-06-22T02:04:44.2029171Z         "doc",
2026-06-22T02:04:44.2029275Z         "impl"
2026-06-22T02:04:44.2029372Z       ],
2026-06-22T02:04:44.2029485Z       "stages": {
2026-06-22T02:04:44.2029585Z         "doc": {
2026-06-22T02:04:44.2029692Z           "complete": true,
2026-06-22T02:04:44.2029795Z           "evidence": [
2026-06-22T02:04:44.2029900Z             {
2026-06-22T02:04:44.2030025Z               "path": "docs-site/src/index.md",
2026-06-22T02:04:44.2030128Z               "line": 50
2026-06-22T02:04:44.2030237Z             }
2026-06-22T02:04:44.2030333Z           ]
2026-06-22T02:04:44.2030439Z         },
2026-06-22T02:04:44.2030538Z         "impl": {
2026-06-22T02:04:44.2030658Z           "complete": true,
2026-06-22T02:04:44.2030763Z           "evidence": [
2026-06-22T02:04:44.2030862Z             {
2026-06-22T02:04:44.2031011Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T02:04:44.2031111Z               "line": 12
2026-06-22T02:04:44.2031216Z             },
2026-06-22T02:04:44.2031316Z             {
2026-06-22T02:04:44.2031454Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.2031564Z               "line": 14
2026-06-22T02:04:44.2031669Z             }
2026-06-22T02:04:44.2031769Z           ]
2026-06-22T02:04:44.2031869Z         },
2026-06-22T02:04:44.2031979Z         "int": {
2026-06-22T02:04:44.2032088Z           "complete": false,
2026-06-22T02:04:44.2032203Z           "evidence": []
2026-06-22T02:04:44.2032308Z         },
2026-06-22T02:04:44.2032406Z         "unit": {
2026-06-22T02:04:44.2032526Z           "complete": false,
2026-06-22T02:04:44.2032625Z           "evidence": []
2026-06-22T02:04:44.2032733Z         }
2026-06-22T02:04:44.2032843Z       }
2026-06-22T02:04:44.2032973Z     },
2026-06-22T02:04:44.2033066Z     {
2026-06-22T02:04:44.2033177Z       "id": "REQ-DOCS-2",
2026-06-22T02:04:44.2033362Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-22T02:04:44.2033472Z       "requiredStages": [
2026-06-22T02:04:44.2033573Z         "doc",
2026-06-22T02:04:44.2033672Z         "int"
2026-06-22T02:04:44.2033772Z       ],
2026-06-22T02:04:44.2033883Z       "stages": {
2026-06-22T02:04:44.2033987Z         "doc": {
2026-06-22T02:04:44.2034097Z           "complete": true,
2026-06-22T02:04:44.2034203Z           "evidence": [
2026-06-22T02:04:44.2034312Z             {
2026-06-22T02:04:44.2034503Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-22T02:04:44.2034621Z               "line": 3
2026-06-22T02:04:44.2038262Z             },
2026-06-22T02:04:44.2038402Z             {
2026-06-22T02:04:44.2038572Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-22T02:04:44.2038682Z               "line": 3
2026-06-22T02:04:44.2038782Z             },
2026-06-22T02:04:44.2038882Z             {
2026-06-22T02:04:44.2039116Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T02:04:44.2039236Z               "line": 3
2026-06-22T02:04:44.2039326Z             }
2026-06-22T02:04:44.2039431Z           ]
2026-06-22T02:04:44.2039530Z         },
2026-06-22T02:04:44.2039641Z         "impl": {
2026-06-22T02:04:44.2039755Z           "complete": false,
2026-06-22T02:04:44.2040022Z           "evidence": []
2026-06-22T02:04:44.2040127Z         },
2026-06-22T02:04:44.2040228Z         "int": {
2026-06-22T02:04:44.2040336Z           "complete": true,
2026-06-22T02:04:44.2040442Z           "evidence": [
2026-06-22T02:04:44.2040543Z             {
2026-06-22T02:04:44.2040827Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:04:44.2040942Z               "line": 14
2026-06-22T02:04:44.2041041Z             }
2026-06-22T02:04:44.2041136Z           ]
2026-06-22T02:04:44.2041242Z         },
2026-06-22T02:04:44.2041337Z         "unit": {
2026-06-22T02:04:44.2041451Z           "complete": false,
2026-06-22T02:04:44.2041562Z           "evidence": []
2026-06-22T02:04:44.2041661Z         }
2026-06-22T02:04:44.2041761Z       }
2026-06-22T02:04:44.2041853Z     },
2026-06-22T02:04:44.2041957Z     {
2026-06-22T02:04:44.2042075Z       "id": "REQ-DOCS-3",
2026-06-22T02:04:44.2042367Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-22T02:04:44.2042487Z       "requiredStages": [
2026-06-22T02:04:44.2042591Z         "doc"
2026-06-22T02:04:44.2042691Z       ],
2026-06-22T02:04:44.2042793Z       "stages": {
2026-06-22T02:04:44.2042900Z         "doc": {
2026-06-22T02:04:44.2043014Z           "complete": true,
2026-06-22T02:04:44.2043119Z           "evidence": [
2026-06-22T02:04:44.2043213Z             {
2026-06-22T02:04:44.2043355Z               "path": "docs-site/src/index.md",
2026-06-22T02:04:44.2043460Z               "line": 42
2026-06-22T02:04:44.2043560Z             }
2026-06-22T02:04:44.2043660Z           ]
2026-06-22T02:04:44.2043756Z         },
2026-06-22T02:04:44.2043861Z         "impl": {
2026-06-22T02:04:44.2043974Z           "complete": false,
2026-06-22T02:04:44.2044085Z           "evidence": []
2026-06-22T02:04:44.2044190Z         },
2026-06-22T02:04:44.2044289Z         "int": {
2026-06-22T02:04:44.2044400Z           "complete": false,
2026-06-22T02:04:44.2044509Z           "evidence": []
2026-06-22T02:04:44.2044604Z         },
2026-06-22T02:04:44.2044696Z         "unit": {
2026-06-22T02:04:44.2044805Z           "complete": false,
2026-06-22T02:04:44.2044914Z           "evidence": []
2026-06-22T02:04:44.2045021Z         }
2026-06-22T02:04:44.2045124Z       }
2026-06-22T02:04:44.2045215Z     },
2026-06-22T02:04:44.2045326Z     {
2026-06-22T02:04:44.2045425Z       "id": "REQ-DOCS-4",
2026-06-22T02:04:44.2045650Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-22T02:04:44.2045764Z       "requiredStages": [
2026-06-22T02:04:44.2045862Z         "doc",
2026-06-22T02:04:44.2045972Z         "impl",
2026-06-22T02:04:44.2046071Z         "unit"
2026-06-22T02:04:44.2046174Z       ],
2026-06-22T02:04:44.2046280Z       "stages": {
2026-06-22T02:04:44.2046390Z         "doc": {
2026-06-22T02:04:44.2046498Z           "complete": true,
2026-06-22T02:04:44.2046614Z           "evidence": [
2026-06-22T02:04:44.2046718Z             {
2026-06-22T02:04:44.2046846Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-22T02:04:44.2046957Z               "line": 35
2026-06-22T02:04:44.2047057Z             }
2026-06-22T02:04:44.2047161Z           ]
2026-06-22T02:04:44.2047258Z         },
2026-06-22T02:04:44.2047357Z         "impl": {
2026-06-22T02:04:44.2047466Z           "complete": true,
2026-06-22T02:04:44.2047573Z           "evidence": [
2026-06-22T02:04:44.2047682Z             {
2026-06-22T02:04:44.2047825Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.2047935Z               "line": 746
2026-06-22T02:04:44.2048038Z             },
2026-06-22T02:04:44.2048144Z             {
2026-06-22T02:04:44.2048274Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.2048382Z               "line": 15
2026-06-22T02:04:44.2048485Z             }
2026-06-22T02:04:44.2048582Z           ]
2026-06-22T02:04:44.2048684Z         },
2026-06-22T02:04:44.2048784Z         "int": {
2026-06-22T02:04:44.2048899Z           "complete": false,
2026-06-22T02:04:44.2049171Z           "evidence": []
2026-06-22T02:04:44.2049276Z         },
2026-06-22T02:04:44.2049380Z         "unit": {
2026-06-22T02:04:44.2049486Z           "complete": true,
2026-06-22T02:04:44.2049590Z           "evidence": [
2026-06-22T02:04:44.2049690Z             {
2026-06-22T02:04:44.2049844Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.2050048Z               "line": 1682
2026-06-22T02:04:44.2050154Z             }
2026-06-22T02:04:44.2050248Z           ]
2026-06-22T02:04:44.2050343Z         }
2026-06-22T02:04:44.2050445Z       }
2026-06-22T02:04:44.2050549Z     },
2026-06-22T02:04:44.2050639Z     {
2026-06-22T02:04:44.2050759Z       "id": "REQ-DOCS-5",
2026-06-22T02:04:44.2050997Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-22T02:04:44.2051117Z       "requiredStages": [
2026-06-22T02:04:44.2051220Z         "impl",
2026-06-22T02:04:44.2051325Z         "int"
2026-06-22T02:04:44.2051425Z       ],
2026-06-22T02:04:44.2051526Z       "stages": {
2026-06-22T02:04:44.2051639Z         "doc": {
2026-06-22T02:04:44.2051754Z           "complete": false,
2026-06-22T02:04:44.2051860Z           "evidence": []
2026-06-22T02:04:44.2051954Z         },
2026-06-22T02:04:44.2052065Z         "impl": {
2026-06-22T02:04:44.2052179Z           "complete": true,
2026-06-22T02:04:44.2052297Z           "evidence": [
2026-06-22T02:04:44.2052404Z             {
2026-06-22T02:04:44.2052550Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.2052660Z               "line": 747
2026-06-22T02:04:44.2052760Z             },
2026-06-22T02:04:44.2052865Z             {
2026-06-22T02:04:44.2052994Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.2053094Z               "line": 113
2026-06-22T02:04:44.2053198Z             }
2026-06-22T02:04:44.2053299Z           ]
2026-06-22T02:04:44.2053395Z         },
2026-06-22T02:04:44.2053494Z         "int": {
2026-06-22T02:04:44.2053612Z           "complete": true,
2026-06-22T02:04:44.2053717Z           "evidence": [
2026-06-22T02:04:44.2053825Z             {
2026-06-22T02:04:44.2053963Z               "path": ".github/workflows/ci.yml",
2026-06-22T02:04:44.2054059Z               "line": 175
2026-06-22T02:04:44.2054168Z             },
2026-06-22T02:04:44.2054263Z             {
2026-06-22T02:04:44.2054416Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.2054525Z               "line": 1719
2026-06-22T02:04:44.2054627Z             }
2026-06-22T02:04:44.2054727Z           ]
2026-06-22T02:04:44.2054826Z         },
2026-06-22T02:04:44.2054927Z         "unit": {
2026-06-22T02:04:44.2055036Z           "complete": false,
2026-06-22T02:04:44.2055141Z           "evidence": []
2026-06-22T02:04:44.2055241Z         }
2026-06-22T02:04:44.2055346Z       }
2026-06-22T02:04:44.2055451Z     },
2026-06-22T02:04:44.2055546Z     {
2026-06-22T02:04:44.2055666Z       "id": "REQ-DOCS-6",
2026-06-22T02:04:44.2056018Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-22T02:04:44.2056147Z       "requiredStages": [
2026-06-22T02:04:44.2056258Z         "impl",
2026-06-22T02:04:44.2056356Z         "unit",
2026-06-22T02:04:44.2056460Z         "int"
2026-06-22T02:04:44.2056561Z       ],
2026-06-22T02:04:44.2056669Z       "stages": {
2026-06-22T02:04:44.2056777Z         "doc": {
2026-06-22T02:04:44.2056892Z           "complete": true,
2026-06-22T02:04:44.2056998Z           "evidence": [
2026-06-22T02:04:44.2057087Z             {
2026-06-22T02:04:44.2057241Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T02:04:44.2057345Z               "line": 4
2026-06-22T02:04:44.2057455Z             }
2026-06-22T02:04:44.2057556Z           ]
2026-06-22T02:04:44.2057660Z         },
2026-06-22T02:04:44.2057755Z         "impl": {
2026-06-22T02:04:44.2057870Z           "complete": true,
2026-06-22T02:04:44.2057970Z           "evidence": [
2026-06-22T02:04:44.2058070Z             {
2026-06-22T02:04:44.2058275Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2058380Z               "line": 5240
2026-06-22T02:04:44.2058481Z             }
2026-06-22T02:04:44.2058590Z           ]
2026-06-22T02:04:44.2058685Z         },
2026-06-22T02:04:44.2058786Z         "int": {
2026-06-22T02:04:44.2058900Z           "complete": true,
2026-06-22T02:04:44.2059189Z           "evidence": [
2026-06-22T02:04:44.2059292Z             {
2026-06-22T02:04:44.2059454Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:04:44.2059565Z               "line": 39
2026-06-22T02:04:44.2059664Z             }
2026-06-22T02:04:44.2059765Z           ]
2026-06-22T02:04:44.2059865Z         },
2026-06-22T02:04:44.2059973Z         "unit": {
2026-06-22T02:04:44.2060075Z           "complete": true,
2026-06-22T02:04:44.2060184Z           "evidence": [
2026-06-22T02:04:44.2060283Z             {
2026-06-22T02:04:44.2060409Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2060517Z               "line": 10742
2026-06-22T02:04:44.2060613Z             }
2026-06-22T02:04:44.2060709Z           ]
2026-06-22T02:04:44.2060813Z         }
2026-06-22T02:04:44.2060903Z       }
2026-06-22T02:04:44.2060995Z     },
2026-06-22T02:04:44.2061095Z     {
2026-06-22T02:04:44.2061209Z       "id": "REQ-ELEVATE-1",
2026-06-22T02:04:44.2064428Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-22T02:04:44.2064581Z       "requiredStages": [
2026-06-22T02:04:44.2064680Z         "doc",
2026-06-22T02:04:44.2064785Z         "impl",
2026-06-22T02:04:44.2064886Z         "unit"
2026-06-22T02:04:44.2064991Z       ],
2026-06-22T02:04:44.2065095Z       "stages": {
2026-06-22T02:04:44.2065187Z         "doc": {
2026-06-22T02:04:44.2065291Z           "complete": true,
2026-06-22T02:04:44.2065400Z           "evidence": [
2026-06-22T02:04:44.2065502Z             {
2026-06-22T02:04:44.2065625Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.2065739Z               "line": 687
2026-06-22T02:04:44.2065840Z             }
2026-06-22T02:04:44.2065939Z           ]
2026-06-22T02:04:44.2066049Z         },
2026-06-22T02:04:44.2066151Z         "impl": {
2026-06-22T02:04:44.2066264Z           "complete": true,
2026-06-22T02:04:44.2066373Z           "evidence": [
2026-06-22T02:04:44.2066480Z             {
2026-06-22T02:04:44.2066611Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2066732Z               "line": 3572
2026-06-22T02:04:44.2066837Z             },
2026-06-22T02:04:44.2066931Z             {
2026-06-22T02:04:44.2067059Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2067173Z               "line": 3617
2026-06-22T02:04:44.2067276Z             },
2026-06-22T02:04:44.2067376Z             {
2026-06-22T02:04:44.2067496Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2067605Z               "line": 3679
2026-06-22T02:04:44.2067705Z             },
2026-06-22T02:04:44.2067806Z             {
2026-06-22T02:04:44.2067948Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2068059Z               "line": 92
2026-06-22T02:04:44.2068272Z             },
2026-06-22T02:04:44.2068378Z             {
2026-06-22T02:04:44.2068511Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2068620Z               "line": 148
2026-06-22T02:04:44.2068722Z             }
2026-06-22T02:04:44.2068821Z           ]
2026-06-22T02:04:44.2069098Z         },
2026-06-22T02:04:44.2069192Z         "int": {
2026-06-22T02:04:44.2069318Z           "complete": false,
2026-06-22T02:04:44.2069418Z           "evidence": []
2026-06-22T02:04:44.2069521Z         },
2026-06-22T02:04:44.2069625Z         "unit": {
2026-06-22T02:04:44.2069744Z           "complete": true,
2026-06-22T02:04:44.2069847Z           "evidence": [
2026-06-22T02:04:44.2069947Z             {
2026-06-22T02:04:44.2070082Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2070190Z               "line": 442
2026-06-22T02:04:44.2070291Z             },
2026-06-22T02:04:44.2070382Z             {
2026-06-22T02:04:44.2070514Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2070621Z               "line": 460
2026-06-22T02:04:44.2070725Z             }
2026-06-22T02:04:44.2070824Z           ]
2026-06-22T02:04:44.2070921Z         }
2026-06-22T02:04:44.2071026Z       }
2026-06-22T02:04:44.2071125Z     },
2026-06-22T02:04:44.2071235Z     {
2026-06-22T02:04:44.2071364Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-22T02:04:44.2073156Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-22T02:04:44.2073280Z       "requiredStages": [
2026-06-22T02:04:44.2073379Z         "doc",
2026-06-22T02:04:44.2073490Z         "impl",
2026-06-22T02:04:44.2073590Z         "unit"
2026-06-22T02:04:44.2073689Z       ],
2026-06-22T02:04:44.2073795Z       "stages": {
2026-06-22T02:04:44.2073900Z         "doc": {
2026-06-22T02:04:44.2074013Z           "complete": true,
2026-06-22T02:04:44.2074115Z           "evidence": [
2026-06-22T02:04:44.2074215Z             {
2026-06-22T02:04:44.2074333Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.2074444Z               "line": 711
2026-06-22T02:04:44.2074539Z             }
2026-06-22T02:04:44.2074638Z           ]
2026-06-22T02:04:44.2074732Z         },
2026-06-22T02:04:44.2074838Z         "impl": {
2026-06-22T02:04:44.2074950Z           "complete": true,
2026-06-22T02:04:44.2075059Z           "evidence": [
2026-06-22T02:04:44.2075150Z             {
2026-06-22T02:04:44.2075279Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2075389Z               "line": 1721
2026-06-22T02:04:44.2075494Z             },
2026-06-22T02:04:44.2075598Z             {
2026-06-22T02:04:44.2075722Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2075827Z               "line": 3125
2026-06-22T02:04:44.2075932Z             },
2026-06-22T02:04:44.2076047Z             {
2026-06-22T02:04:44.2076171Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2076280Z               "line": 3134
2026-06-22T02:04:44.2076381Z             }
2026-06-22T02:04:44.2076480Z           ]
2026-06-22T02:04:44.2076585Z         },
2026-06-22T02:04:44.2076677Z         "int": {
2026-06-22T02:04:44.2076795Z           "complete": false,
2026-06-22T02:04:44.2076900Z           "evidence": []
2026-06-22T02:04:44.2077001Z         },
2026-06-22T02:04:44.2090627Z         "unit": {
2026-06-22T02:04:44.2090765Z           "complete": true,
2026-06-22T02:04:44.2090883Z           "evidence": [
2026-06-22T02:04:44.2090982Z             {
2026-06-22T02:04:44.2091325Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2091440Z               "line": 7950
2026-06-22T02:04:44.2091545Z             },
2026-06-22T02:04:44.2091649Z             {
2026-06-22T02:04:44.2091788Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2092002Z               "line": 7991
2026-06-22T02:04:44.2092103Z             }
2026-06-22T02:04:44.2092202Z           ]
2026-06-22T02:04:44.2092307Z         }
2026-06-22T02:04:44.2092404Z       }
2026-06-22T02:04:44.2092508Z     },
2026-06-22T02:04:44.2092608Z     {
2026-06-22T02:04:44.2092752Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-22T02:04:44.2097629Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-22T02:04:44.2097802Z       "requiredStages": [
2026-06-22T02:04:44.2097906Z         "doc",
2026-06-22T02:04:44.2098001Z         "impl",
2026-06-22T02:04:44.2098107Z         "unit",
2026-06-22T02:04:44.2098212Z         "int"
2026-06-22T02:04:44.2098306Z       ],
2026-06-22T02:04:44.2098412Z       "stages": {
2026-06-22T02:04:44.2098513Z         "doc": {
2026-06-22T02:04:44.2098625Z           "complete": true,
2026-06-22T02:04:44.2098739Z           "evidence": [
2026-06-22T02:04:44.2098844Z             {
2026-06-22T02:04:44.2099041Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.2099162Z               "line": 163
2026-06-22T02:04:44.2099257Z             }
2026-06-22T02:04:44.2099356Z           ]
2026-06-22T02:04:44.2099458Z         },
2026-06-22T02:04:44.2099567Z         "impl": {
2026-06-22T02:04:44.2099690Z           "complete": true,
2026-06-22T02:04:44.2099796Z           "evidence": [
2026-06-22T02:04:44.2099900Z             {
2026-06-22T02:04:44.2100058Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.2100172Z               "line": 105
2026-06-22T02:04:44.2100272Z             },
2026-06-22T02:04:44.2100383Z             {
2026-06-22T02:04:44.2100520Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2100630Z               "line": 7219
2026-06-22T02:04:44.2100736Z             }
2026-06-22T02:04:44.2100825Z           ]
2026-06-22T02:04:44.2100926Z         },
2026-06-22T02:04:44.2101027Z         "int": {
2026-06-22T02:04:44.2101135Z           "complete": true,
2026-06-22T02:04:44.2101239Z           "evidence": [
2026-06-22T02:04:44.2101339Z             {
2026-06-22T02:04:44.2101466Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2101575Z               "line": 7384
2026-06-22T02:04:44.2101681Z             }
2026-06-22T02:04:44.2101781Z           ]
2026-06-22T02:04:44.2101996Z         },
2026-06-22T02:04:44.2102096Z         "unit": {
2026-06-22T02:04:44.2102205Z           "complete": true,
2026-06-22T02:04:44.2102311Z           "evidence": [
2026-06-22T02:04:44.2102415Z             {
2026-06-22T02:04:44.2102547Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2102758Z               "line": 7355
2026-06-22T02:04:44.2102858Z             }
2026-06-22T02:04:44.2102960Z           ]
2026-06-22T02:04:44.2103058Z         }
2026-06-22T02:04:44.2103163Z       }
2026-06-22T02:04:44.2103260Z     },
2026-06-22T02:04:44.2103359Z     {
2026-06-22T02:04:44.2103492Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-22T02:04:44.2104861Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-22T02:04:44.2104999Z       "requiredStages": [
2026-06-22T02:04:44.2105102Z         "impl",
2026-06-22T02:04:44.2105208Z         "unit"
2026-06-22T02:04:44.2105313Z       ],
2026-06-22T02:04:44.2105422Z       "stages": {
2026-06-22T02:04:44.2105528Z         "doc": {
2026-06-22T02:04:44.2105642Z           "complete": false,
2026-06-22T02:04:44.2105761Z           "evidence": []
2026-06-22T02:04:44.2105857Z         },
2026-06-22T02:04:44.2105966Z         "impl": {
2026-06-22T02:04:44.2106081Z           "complete": true,
2026-06-22T02:04:44.2106182Z           "evidence": [
2026-06-22T02:04:44.2106290Z             {
2026-06-22T02:04:44.2106417Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2106532Z               "line": 3165
2026-06-22T02:04:44.2106630Z             }
2026-06-22T02:04:44.2106735Z           ]
2026-06-22T02:04:44.2106836Z         },
2026-06-22T02:04:44.2106936Z         "int": {
2026-06-22T02:04:44.2107045Z           "complete": false,
2026-06-22T02:04:44.2107156Z           "evidence": []
2026-06-22T02:04:44.2107255Z         },
2026-06-22T02:04:44.2107345Z         "unit": {
2026-06-22T02:04:44.2107451Z           "complete": true,
2026-06-22T02:04:44.2107561Z           "evidence": [
2026-06-22T02:04:44.2107664Z             {
2026-06-22T02:04:44.2107795Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2107904Z               "line": 7331
2026-06-22T02:04:44.2108008Z             }
2026-06-22T02:04:44.2108109Z           ]
2026-06-22T02:04:44.2108209Z         }
2026-06-22T02:04:44.2108308Z       }
2026-06-22T02:04:44.2108400Z     },
2026-06-22T02:04:44.2108499Z     {
2026-06-22T02:04:44.2108604Z       "id": "REQ-EP-1",
2026-06-22T02:04:44.2108768Z       "title": "Day-one endpoint types; open type system",
2026-06-22T02:04:44.2108881Z       "requiredStages": [
2026-06-22T02:04:44.2109063Z         "impl",
2026-06-22T02:04:44.2109166Z         "unit"
2026-06-22T02:04:44.2109271Z       ],
2026-06-22T02:04:44.2109371Z       "stages": {
2026-06-22T02:04:44.2109479Z         "doc": {
2026-06-22T02:04:44.2109592Z           "complete": false,
2026-06-22T02:04:44.2109698Z           "evidence": []
2026-06-22T02:04:44.2109803Z         },
2026-06-22T02:04:44.2109912Z         "impl": {
2026-06-22T02:04:44.2110018Z           "complete": true,
2026-06-22T02:04:44.2110132Z           "evidence": [
2026-06-22T02:04:44.2110231Z             {
2026-06-22T02:04:44.2110380Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2110489Z               "line": 77
2026-06-22T02:04:44.2110594Z             },
2026-06-22T02:04:44.2110695Z             {
2026-06-22T02:04:44.2110847Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2110953Z               "line": 94
2026-06-22T02:04:44.2111051Z             }
2026-06-22T02:04:44.2111156Z           ]
2026-06-22T02:04:44.2111253Z         },
2026-06-22T02:04:44.2111348Z         "int": {
2026-06-22T02:04:44.2111582Z           "complete": false,
2026-06-22T02:04:44.2111691Z           "evidence": []
2026-06-22T02:04:44.2111785Z         },
2026-06-22T02:04:44.2111894Z         "unit": {
2026-06-22T02:04:44.2111999Z           "complete": true,
2026-06-22T02:04:44.2112112Z           "evidence": [
2026-06-22T02:04:44.2112308Z             {
2026-06-22T02:04:44.2112459Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2112571Z               "line": 161
2026-06-22T02:04:44.2112675Z             },
2026-06-22T02:04:44.2112774Z             {
2026-06-22T02:04:44.2112927Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2113027Z               "line": 178
2026-06-22T02:04:44.2113132Z             }
2026-06-22T02:04:44.2113238Z           ]
2026-06-22T02:04:44.2113337Z         }
2026-06-22T02:04:44.2113432Z       }
2026-06-22T02:04:44.2113525Z     },
2026-06-22T02:04:44.2113633Z     {
2026-06-22T02:04:44.2113738Z       "id": "REQ-EP-2",
2026-06-22T02:04:44.2113938Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-22T02:04:44.2114048Z       "requiredStages": [
2026-06-22T02:04:44.2114149Z         "impl",
2026-06-22T02:04:44.2114252Z         "unit"
2026-06-22T02:04:44.2114353Z       ],
2026-06-22T02:04:44.2114459Z       "stages": {
2026-06-22T02:04:44.2114577Z         "doc": {
2026-06-22T02:04:44.2114694Z           "complete": false,
2026-06-22T02:04:44.2114801Z           "evidence": []
2026-06-22T02:04:44.2114915Z         },
2026-06-22T02:04:44.2115028Z         "impl": {
2026-06-22T02:04:44.2115134Z           "complete": true,
2026-06-22T02:04:44.2115244Z           "evidence": [
2026-06-22T02:04:44.2115348Z             {
2026-06-22T02:04:44.2115492Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2115601Z               "line": 114
2026-06-22T02:04:44.2115711Z             },
2026-06-22T02:04:44.2115816Z             {
2026-06-22T02:04:44.2115949Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2116070Z               "line": 131
2026-06-22T02:04:44.2116173Z             },
2026-06-22T02:04:44.2116288Z             {
2026-06-22T02:04:44.2116427Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2116540Z               "line": 138
2026-06-22T02:04:44.2116650Z             }
2026-06-22T02:04:44.2116747Z           ]
2026-06-22T02:04:44.2116850Z         },
2026-06-22T02:04:44.2116950Z         "int": {
2026-06-22T02:04:44.2117064Z           "complete": false,
2026-06-22T02:04:44.2117181Z           "evidence": []
2026-06-22T02:04:44.2117285Z         },
2026-06-22T02:04:44.2117391Z         "unit": {
2026-06-22T02:04:44.2117505Z           "complete": true,
2026-06-22T02:04:44.2117610Z           "evidence": [
2026-06-22T02:04:44.2117711Z             {
2026-06-22T02:04:44.2117848Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2117958Z               "line": 190
2026-06-22T02:04:44.2118059Z             },
2026-06-22T02:04:44.2118196Z             {
2026-06-22T02:04:44.2118340Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2118440Z               "line": 208
2026-06-22T02:04:44.2118539Z             },
2026-06-22T02:04:44.2118641Z             {
2026-06-22T02:04:44.2118783Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:04:44.2118883Z               "line": 221
2026-06-22T02:04:44.2119045Z             }
2026-06-22T02:04:44.2119136Z           ]
2026-06-22T02:04:44.2119242Z         }
2026-06-22T02:04:44.2119342Z       }
2026-06-22T02:04:44.2119441Z     },
2026-06-22T02:04:44.2119532Z     {
2026-06-22T02:04:44.2119643Z       "id": "REQ-EP-3",
2026-06-22T02:04:44.2119854Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-22T02:04:44.2119964Z       "requiredStages": [
2026-06-22T02:04:44.2120063Z         "impl",
2026-06-22T02:04:44.2120167Z         "unit"
2026-06-22T02:04:44.2120268Z       ],
2026-06-22T02:04:44.2120377Z       "stages": {
2026-06-22T02:04:44.2120578Z         "doc": {
2026-06-22T02:04:44.2120702Z           "complete": false,
2026-06-22T02:04:44.2120806Z           "evidence": []
2026-06-22T02:04:44.2120898Z         },
2026-06-22T02:04:44.2120998Z         "impl": {
2026-06-22T02:04:44.2121116Z           "complete": true,
2026-06-22T02:04:44.2121331Z           "evidence": [
2026-06-22T02:04:44.2121431Z             {
2026-06-22T02:04:44.2121589Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2121684Z               "line": 31
2026-06-22T02:04:44.2121794Z             },
2026-06-22T02:04:44.2121890Z             {
2026-06-22T02:04:44.2122036Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2122147Z               "line": 49
2026-06-22T02:04:44.2122242Z             }
2026-06-22T02:04:44.2122345Z           ]
2026-06-22T02:04:44.2122446Z         },
2026-06-22T02:04:44.2122554Z         "int": {
2026-06-22T02:04:44.2122672Z           "complete": false,
2026-06-22T02:04:44.2122796Z           "evidence": []
2026-06-22T02:04:44.2122902Z         },
2026-06-22T02:04:44.2123010Z         "unit": {
2026-06-22T02:04:44.2123121Z           "complete": true,
2026-06-22T02:04:44.2123221Z           "evidence": [
2026-06-22T02:04:44.2123330Z             {
2026-06-22T02:04:44.2123469Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2123587Z               "line": 156
2026-06-22T02:04:44.2123692Z             },
2026-06-22T02:04:44.2123793Z             {
2026-06-22T02:04:44.2123935Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2124041Z               "line": 164
2026-06-22T02:04:44.2124150Z             },
2026-06-22T02:04:44.2124236Z             {
2026-06-22T02:04:44.2124380Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2124484Z               "line": 177
2026-06-22T02:04:44.2124584Z             },
2026-06-22T02:04:44.2124690Z             {
2026-06-22T02:04:44.2124822Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2124942Z               "line": 200
2026-06-22T02:04:44.2125034Z             },
2026-06-22T02:04:44.2125137Z             {
2026-06-22T02:04:44.2125288Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2125399Z               "line": 216
2026-06-22T02:04:44.2125503Z             },
2026-06-22T02:04:44.2125608Z             {
2026-06-22T02:04:44.2125752Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:04:44.2125856Z               "line": 233
2026-06-22T02:04:44.2125966Z             }
2026-06-22T02:04:44.2126076Z           ]
2026-06-22T02:04:44.2126170Z         }
2026-06-22T02:04:44.2126276Z       }
2026-06-22T02:04:44.2126376Z     },
2026-06-22T02:04:44.2126481Z     {
2026-06-22T02:04:44.2126591Z       "id": "REQ-EP-4",
2026-06-22T02:04:44.2126772Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-22T02:04:44.2126891Z       "requiredStages": [
2026-06-22T02:04:44.2126996Z         "impl",
2026-06-22T02:04:44.2127105Z         "unit"
2026-06-22T02:04:44.2127191Z       ],
2026-06-22T02:04:44.2127302Z       "stages": {
2026-06-22T02:04:44.2127396Z         "doc": {
2026-06-22T02:04:44.2127505Z           "complete": false,
2026-06-22T02:04:44.2127615Z           "evidence": []
2026-06-22T02:04:44.2127718Z         },
2026-06-22T02:04:44.2127821Z         "impl": {
2026-06-22T02:04:44.2127932Z           "complete": true,
2026-06-22T02:04:44.2128041Z           "evidence": [
2026-06-22T02:04:44.2128141Z             {
2026-06-22T02:04:44.2128290Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2128399Z               "line": 778
2026-06-22T02:04:44.2128494Z             },
2026-06-22T02:04:44.2128590Z             {
2026-06-22T02:04:44.2128723Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2128828Z               "line": 1221
2026-06-22T02:04:44.2128929Z             },
2026-06-22T02:04:44.2129104Z             {
2026-06-22T02:04:44.2129258Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2129482Z               "line": 2169
2026-06-22T02:04:44.2129591Z             },
2026-06-22T02:04:44.2129687Z             {
2026-06-22T02:04:44.2129836Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2129944Z               "line": 125
2026-06-22T02:04:44.2130155Z             },
2026-06-22T02:04:44.2130259Z             {
2026-06-22T02:04:44.2130396Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2130505Z               "line": 715
2026-06-22T02:04:44.2130608Z             },
2026-06-22T02:04:44.2130713Z             {
2026-06-22T02:04:44.2130843Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2130957Z               "line": 864
2026-06-22T02:04:44.2131061Z             },
2026-06-22T02:04:44.2131162Z             {
2026-06-22T02:04:44.2131309Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.2131415Z               "line": 271
2026-06-22T02:04:44.2131524Z             },
2026-06-22T02:04:44.2131633Z             {
2026-06-22T02:04:44.2131777Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.2131881Z               "line": 458
2026-06-22T02:04:44.2131986Z             },
2026-06-22T02:04:44.2132097Z             {
2026-06-22T02:04:44.2132229Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.2132354Z               "line": 1246
2026-06-22T02:04:44.2132455Z             }
2026-06-22T02:04:44.2132548Z           ]
2026-06-22T02:04:44.2132654Z         },
2026-06-22T02:04:44.2132760Z         "int": {
2026-06-22T02:04:44.2132881Z           "complete": false,
2026-06-22T02:04:44.2132991Z           "evidence": []
2026-06-22T02:04:44.2133091Z         },
2026-06-22T02:04:44.2133189Z         "unit": {
2026-06-22T02:04:44.2133303Z           "complete": true,
2026-06-22T02:04:44.2133414Z           "evidence": [
2026-06-22T02:04:44.2133518Z             {
2026-06-22T02:04:44.2133647Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2133766Z               "line": 955
2026-06-22T02:04:44.2133870Z             },
2026-06-22T02:04:44.2133972Z             {
2026-06-22T02:04:44.2134129Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T02:04:44.2134243Z               "line": 76
2026-06-22T02:04:44.2134344Z             },
2026-06-22T02:04:44.2134448Z             {
2026-06-22T02:04:44.2134596Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T02:04:44.2134711Z               "line": 147
2026-06-22T02:04:44.2134824Z             }
2026-06-22T02:04:44.2134921Z           ]
2026-06-22T02:04:44.2135030Z         }
2026-06-22T02:04:44.2135121Z       }
2026-06-22T02:04:44.2135231Z     },
2026-06-22T02:04:44.2135331Z     {
2026-06-22T02:04:44.2135435Z       "id": "REQ-EP-5",
2026-06-22T02:04:44.2136140Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-22T02:04:44.2136265Z       "requiredStages": [
2026-06-22T02:04:44.2141655Z         "impl",
2026-06-22T02:04:44.2141798Z         "unit",
2026-06-22T02:04:44.2141911Z         "int"
2026-06-22T02:04:44.2142013Z       ],
2026-06-22T02:04:44.2142127Z       "stages": {
2026-06-22T02:04:44.2142256Z         "doc": {
2026-06-22T02:04:44.2142389Z           "complete": false,
2026-06-22T02:04:44.2142504Z           "evidence": []
2026-06-22T02:04:44.2142589Z         },
2026-06-22T02:04:44.2142700Z         "impl": {
2026-06-22T02:04:44.2142804Z           "complete": true,
2026-06-22T02:04:44.2142919Z           "evidence": [
2026-06-22T02:04:44.2143010Z             {
2026-06-22T02:04:44.2143180Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2143286Z               "line": 367
2026-06-22T02:04:44.2143390Z             },
2026-06-22T02:04:44.2143494Z             {
2026-06-22T02:04:44.2143651Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2143912Z               "line": 18
2026-06-22T02:04:44.2144013Z             },
2026-06-22T02:04:44.2144111Z             {
2026-06-22T02:04:44.2144260Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2144361Z               "line": 63
2026-06-22T02:04:44.2144561Z             },
2026-06-22T02:04:44.2144665Z             {
2026-06-22T02:04:44.2144813Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2144918Z               "line": 92
2026-06-22T02:04:44.2145018Z             },
2026-06-22T02:04:44.2145118Z             {
2026-06-22T02:04:44.2145257Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2145366Z               "line": 167
2026-06-22T02:04:44.2145466Z             },
2026-06-22T02:04:44.2145567Z             {
2026-06-22T02:04:44.2145713Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2145820Z               "line": 179
2026-06-22T02:04:44.2145938Z             },
2026-06-22T02:04:44.2146033Z             {
2026-06-22T02:04:44.2146178Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.2146290Z               "line": 114
2026-06-22T02:04:44.2146390Z             },
2026-06-22T02:04:44.2146485Z             {
2026-06-22T02:04:44.2146628Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2146742Z               "line": 22
2026-06-22T02:04:44.2146834Z             },
2026-06-22T02:04:44.2146934Z             {
2026-06-22T02:04:44.2147082Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2147191Z               "line": 145
2026-06-22T02:04:44.2147295Z             },
2026-06-22T02:04:44.2147391Z             {
2026-06-22T02:04:44.2147544Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2147653Z               "line": 174
2026-06-22T02:04:44.2147754Z             },
2026-06-22T02:04:44.2147858Z             {
2026-06-22T02:04:44.2148002Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2148122Z               "line": 196
2026-06-22T02:04:44.2148211Z             },
2026-06-22T02:04:44.2148316Z             {
2026-06-22T02:04:44.2148455Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2148563Z               "line": 221
2026-06-22T02:04:44.2148668Z             },
2026-06-22T02:04:44.2148754Z             {
2026-06-22T02:04:44.2148890Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2149067Z               "line": 247
2026-06-22T02:04:44.2149181Z             },
2026-06-22T02:04:44.2149271Z             {
2026-06-22T02:04:44.2149420Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2149528Z               "line": 270
2026-06-22T02:04:44.2149624Z             },
2026-06-22T02:04:44.2149730Z             {
2026-06-22T02:04:44.2149867Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2149973Z               "line": 104
2026-06-22T02:04:44.2150082Z             },
2026-06-22T02:04:44.2150191Z             {
2026-06-22T02:04:44.2150326Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2150435Z               "line": 6068
2026-06-22T02:04:44.2150540Z             },
2026-06-22T02:04:44.2150636Z             {
2026-06-22T02:04:44.2150768Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2150864Z               "line": 6202
2026-06-22T02:04:44.2150961Z             },
2026-06-22T02:04:44.2151064Z             {
2026-06-22T02:04:44.2151198Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2151351Z               "line": 6368
2026-06-22T02:04:44.2151482Z             },
2026-06-22T02:04:44.2151626Z             {
2026-06-22T02:04:44.2151813Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2151972Z               "line": 6896
2026-06-22T02:04:44.2152077Z             }
2026-06-22T02:04:44.2152176Z           ]
2026-06-22T02:04:44.2152282Z         },
2026-06-22T02:04:44.2152540Z         "int": {
2026-06-22T02:04:44.2152701Z           "complete": true,
2026-06-22T02:04:44.2152869Z           "evidence": [
2026-06-22T02:04:44.2153021Z             {
2026-06-22T02:04:44.2153269Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:04:44.2153421Z               "line": 16
2026-06-22T02:04:44.2153750Z             },
2026-06-22T02:04:44.2153904Z             {
2026-06-22T02:04:44.2154130Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:04:44.2154300Z               "line": 15
2026-06-22T02:04:44.2154448Z             }
2026-06-22T02:04:44.2154610Z           ]
2026-06-22T02:04:44.2154757Z         },
2026-06-22T02:04:44.2154916Z         "unit": {
2026-06-22T02:04:44.2155097Z           "complete": true,
2026-06-22T02:04:44.2155264Z           "evidence": [
2026-06-22T02:04:44.2155417Z             {
2026-06-22T02:04:44.2155673Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2155836Z               "line": 246
2026-06-22T02:04:44.2156002Z             },
2026-06-22T02:04:44.2156174Z             {
2026-06-22T02:04:44.2156413Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2156593Z               "line": 306
2026-06-22T02:04:44.2156752Z             },
2026-06-22T02:04:44.2156912Z             {
2026-06-22T02:04:44.2157170Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:04:44.2157332Z               "line": 363
2026-06-22T02:04:44.2157499Z             },
2026-06-22T02:04:44.2157656Z             {
2026-06-22T02:04:44.2157884Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2158062Z               "line": 286
2026-06-22T02:04:44.2158208Z             },
2026-06-22T02:04:44.2158372Z             {
2026-06-22T02:04:44.2158601Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2158780Z               "line": 338
2026-06-22T02:04:44.2158935Z             },
2026-06-22T02:04:44.2159176Z             {
2026-06-22T02:04:44.2159421Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2159583Z               "line": 783
2026-06-22T02:04:44.2159736Z             },
2026-06-22T02:04:44.2159884Z             {
2026-06-22T02:04:44.2160098Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2160276Z               "line": 8751
2026-06-22T02:04:44.2160446Z             },
2026-06-22T02:04:44.2160605Z             {
2026-06-22T02:04:44.2160799Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2160971Z               "line": 8904
2026-06-22T02:04:44.2161119Z             },
2026-06-22T02:04:44.2161272Z             {
2026-06-22T02:04:44.2161473Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2161657Z               "line": 9493
2026-06-22T02:04:44.2161816Z             },
2026-06-22T02:04:44.2161972Z             {
2026-06-22T02:04:44.2162177Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2162327Z               "line": 9609
2026-06-22T02:04:44.2162494Z             }
2026-06-22T02:04:44.2162660Z           ]
2026-06-22T02:04:44.2162814Z         }
2026-06-22T02:04:44.2162965Z       }
2026-06-22T02:04:44.2163119Z     },
2026-06-22T02:04:44.2163280Z     {
2026-06-22T02:04:44.2163444Z       "id": "REQ-EP-6",
2026-06-22T02:04:44.2166167Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-22T02:04:44.2166381Z       "requiredStages": [
2026-06-22T02:04:44.2166538Z         "doc",
2026-06-22T02:04:44.2166706Z         "impl",
2026-06-22T02:04:44.2166862Z         "unit"
2026-06-22T02:04:44.2167025Z       ],
2026-06-22T02:04:44.2167340Z       "stages": {
2026-06-22T02:04:44.2167510Z         "doc": {
2026-06-22T02:04:44.2167683Z           "complete": true,
2026-06-22T02:04:44.2167849Z           "evidence": [
2026-06-22T02:04:44.2168002Z             {
2026-06-22T02:04:44.2168192Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.2168360Z               "line": 227
2026-06-22T02:04:44.2168683Z             }
2026-06-22T02:04:44.2168841Z           ]
2026-06-22T02:04:44.2169083Z         },
2026-06-22T02:04:44.2169256Z         "impl": {
2026-06-22T02:04:44.2169442Z           "complete": true,
2026-06-22T02:04:44.2169613Z           "evidence": [
2026-06-22T02:04:44.2169778Z             {
2026-06-22T02:04:44.2170005Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2170182Z               "line": 212
2026-06-22T02:04:44.2170343Z             }
2026-06-22T02:04:44.2170492Z           ]
2026-06-22T02:04:44.2170649Z         },
2026-06-22T02:04:44.2170812Z         "int": {
2026-06-22T02:04:44.2170987Z           "complete": true,
2026-06-22T02:04:44.2171160Z           "evidence": [
2026-06-22T02:04:44.2171326Z             {
2026-06-22T02:04:44.2171560Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T02:04:44.2171737Z               "line": 18
2026-06-22T02:04:44.2171898Z             }
2026-06-22T02:04:44.2172052Z           ]
2026-06-22T02:04:44.2172227Z         },
2026-06-22T02:04:44.2172386Z         "unit": {
2026-06-22T02:04:44.2172570Z           "complete": true,
2026-06-22T02:04:44.2172746Z           "evidence": [
2026-06-22T02:04:44.2172901Z             {
2026-06-22T02:04:44.2173150Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.2173316Z               "line": 556
2026-06-22T02:04:44.2173474Z             },
2026-06-22T02:04:44.2173631Z             {
2026-06-22T02:04:44.2173859Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2174032Z               "line": 904
2026-06-22T02:04:44.2174188Z             }
2026-06-22T02:04:44.2174356Z           ]
2026-06-22T02:04:44.2174522Z         }
2026-06-22T02:04:44.2174685Z       }
2026-06-22T02:04:44.2174828Z     },
2026-06-22T02:04:44.2174986Z     {
2026-06-22T02:04:44.2175155Z       "id": "REQ-EP-7",
2026-06-22T02:04:44.2178262Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-22T02:04:44.2178467Z       "requiredStages": [
2026-06-22T02:04:44.2178633Z         "doc",
2026-06-22T02:04:44.2178787Z         "impl",
2026-06-22T02:04:44.2179018Z         "unit"
2026-06-22T02:04:44.2179182Z       ],
2026-06-22T02:04:44.2179348Z       "stages": {
2026-06-22T02:04:44.2179506Z         "doc": {
2026-06-22T02:04:44.2179682Z           "complete": true,
2026-06-22T02:04:44.2179859Z           "evidence": [
2026-06-22T02:04:44.2180016Z             {
2026-06-22T02:04:44.2180202Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.2180377Z               "line": 490
2026-06-22T02:04:44.2180537Z             }
2026-06-22T02:04:44.2180685Z           ]
2026-06-22T02:04:44.2180847Z         },
2026-06-22T02:04:44.2181024Z         "impl": {
2026-06-22T02:04:44.2181204Z           "complete": true,
2026-06-22T02:04:44.2181377Z           "evidence": [
2026-06-22T02:04:44.2181533Z             {
2026-06-22T02:04:44.2181758Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.2181929Z               "line": 505
2026-06-22T02:04:44.2182082Z             },
2026-06-22T02:04:44.2182234Z             {
2026-06-22T02:04:44.2182448Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.2182617Z               "line": 87
2026-06-22T02:04:44.2182922Z             },
2026-06-22T02:04:44.2183092Z             {
2026-06-22T02:04:44.2183335Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2183509Z               "line": 81
2026-06-22T02:04:44.2183676Z             },
2026-06-22T02:04:44.2183972Z             {
2026-06-22T02:04:44.2184225Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2184396Z               "line": 166
2026-06-22T02:04:44.2184559Z             },
2026-06-22T02:04:44.2184715Z             {
2026-06-22T02:04:44.2184921Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2185087Z               "line": 1645
2026-06-22T02:04:44.2185241Z             }
2026-06-22T02:04:44.2185402Z           ]
2026-06-22T02:04:44.2185547Z         },
2026-06-22T02:04:44.2185706Z         "int": {
2026-06-22T02:04:44.2185883Z           "complete": false,
2026-06-22T02:04:44.2186056Z           "evidence": []
2026-06-22T02:04:44.2186224Z         },
2026-06-22T02:04:44.2186385Z         "unit": {
2026-06-22T02:04:44.2186567Z           "complete": true,
2026-06-22T02:04:44.2186738Z           "evidence": [
2026-06-22T02:04:44.2186901Z             {
2026-06-22T02:04:44.2187126Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.2187305Z               "line": 623
2026-06-22T02:04:44.2187483Z             },
2026-06-22T02:04:44.2187635Z             {
2026-06-22T02:04:44.2187849Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.2188017Z               "line": 212
2026-06-22T02:04:44.2188187Z             },
2026-06-22T02:04:44.2188342Z             {
2026-06-22T02:04:44.2188559Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.2188740Z               "line": 307
2026-06-22T02:04:44.2188897Z             },
2026-06-22T02:04:44.2189127Z             {
2026-06-22T02:04:44.2189322Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2189494Z               "line": 7724
2026-06-22T02:04:44.2189651Z             },
2026-06-22T02:04:44.2189813Z             {
2026-06-22T02:04:44.2190014Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2190171Z               "line": 7751
2026-06-22T02:04:44.2190329Z             }
2026-06-22T02:04:44.2190485Z           ]
2026-06-22T02:04:44.2190644Z         }
2026-06-22T02:04:44.2190795Z       }
2026-06-22T02:04:44.2190957Z     },
2026-06-22T02:04:44.2191116Z     {
2026-06-22T02:04:44.2191297Z       "id": "REQ-FRONT-1",
2026-06-22T02:04:44.2191627Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-22T02:04:44.2191807Z       "requiredStages": [],
2026-06-22T02:04:44.2191975Z       "stages": {
2026-06-22T02:04:44.2192126Z         "doc": {
2026-06-22T02:04:44.2192323Z           "complete": false,
2026-06-22T02:04:44.2192494Z           "evidence": []
2026-06-22T02:04:44.2192647Z         },
2026-06-22T02:04:44.2192814Z         "impl": {
2026-06-22T02:04:44.2192981Z           "complete": false,
2026-06-22T02:04:44.2193163Z           "evidence": []
2026-06-22T02:04:44.2193319Z         },
2026-06-22T02:04:44.2193477Z         "int": {
2026-06-22T02:04:44.2193657Z           "complete": false,
2026-06-22T02:04:44.2193828Z           "evidence": []
2026-06-22T02:04:44.2193984Z         },
2026-06-22T02:04:44.2194141Z         "unit": {
2026-06-22T02:04:44.2194322Z           "complete": false,
2026-06-22T02:04:44.2194480Z           "evidence": []
2026-06-22T02:04:44.2194641Z         }
2026-06-22T02:04:44.2194799Z       }
2026-06-22T02:04:44.2194961Z     },
2026-06-22T02:04:44.2195119Z     {
2026-06-22T02:04:44.2195318Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-22T02:04:44.2205206Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-22T02:04:44.2205760Z       "requiredStages": [
2026-06-22T02:04:44.2205926Z         "int"
2026-06-22T02:04:44.2206075Z       ],
2026-06-22T02:04:44.2206231Z       "stages": {
2026-06-22T02:04:44.2206390Z         "doc": {
2026-06-22T02:04:44.2206575Z           "complete": false,
2026-06-22T02:04:44.2206746Z           "evidence": []
2026-06-22T02:04:44.2206907Z         },
2026-06-22T02:04:44.2207073Z         "impl": {
2026-06-22T02:04:44.2207258Z           "complete": false,
2026-06-22T02:04:44.2207430Z           "evidence": []
2026-06-22T02:04:44.2207592Z         },
2026-06-22T02:04:44.2207758Z         "int": {
2026-06-22T02:04:44.2207931Z           "complete": true,
2026-06-22T02:04:44.2208111Z           "evidence": [
2026-06-22T02:04:44.2208265Z             {
2026-06-22T02:04:44.2208517Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T02:04:44.2208689Z               "line": 300
2026-06-22T02:04:44.2208842Z             }
2026-06-22T02:04:44.2209103Z           ]
2026-06-22T02:04:44.2209248Z         },
2026-06-22T02:04:44.2209404Z         "unit": {
2026-06-22T02:04:44.2209576Z           "complete": false,
2026-06-22T02:04:44.2209764Z           "evidence": []
2026-06-22T02:04:44.2209919Z         }
2026-06-22T02:04:44.2210084Z       }
2026-06-22T02:04:44.2210242Z     },
2026-06-22T02:04:44.2210389Z     {
2026-06-22T02:04:44.2210623Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-22T02:04:44.2215290Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-22T02:04:44.2215513Z       "requiredStages": [
2026-06-22T02:04:44.2215695Z         "impl",
2026-06-22T02:04:44.2215852Z         "unit",
2026-06-22T02:04:44.2216015Z         "int"
2026-06-22T02:04:44.2216181Z       ],
2026-06-22T02:04:44.2216344Z       "stages": {
2026-06-22T02:04:44.2216510Z         "doc": {
2026-06-22T02:04:44.2216855Z           "complete": false,
2026-06-22T02:04:44.2217029Z           "evidence": []
2026-06-22T02:04:44.2217179Z         },
2026-06-22T02:04:44.2217339Z         "impl": {
2026-06-22T02:04:44.2217520Z           "complete": true,
2026-06-22T02:04:44.2217680Z           "evidence": [
2026-06-22T02:04:44.2217842Z             {
2026-06-22T02:04:44.2218224Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2218400Z               "line": 257
2026-06-22T02:04:44.2218557Z             }
2026-06-22T02:04:44.2218719Z           ]
2026-06-22T02:04:44.2218882Z         },
2026-06-22T02:04:44.2219116Z         "int": {
2026-06-22T02:04:44.2219310Z           "complete": true,
2026-06-22T02:04:44.2219483Z           "evidence": [
2026-06-22T02:04:44.2219639Z             {
2026-06-22T02:04:44.2219891Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-22T02:04:44.2220070Z               "line": 93
2026-06-22T02:04:44.2220220Z             }
2026-06-22T02:04:44.2220368Z           ]
2026-06-22T02:04:44.2220540Z         },
2026-06-22T02:04:44.2220693Z         "unit": {
2026-06-22T02:04:44.2220878Z           "complete": true,
2026-06-22T02:04:44.2221046Z           "evidence": [
2026-06-22T02:04:44.2221216Z             {
2026-06-22T02:04:44.2221427Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2221603Z               "line": 802
2026-06-22T02:04:44.2221765Z             },
2026-06-22T02:04:44.2221922Z             {
2026-06-22T02:04:44.2222141Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2222310Z               "line": 824
2026-06-22T02:04:44.2222466Z             },
2026-06-22T02:04:44.2222632Z             {
2026-06-22T02:04:44.2222840Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2223002Z               "line": 855
2026-06-22T02:04:44.2223159Z             }
2026-06-22T02:04:44.2223312Z           ]
2026-06-22T02:04:44.2223469Z         }
2026-06-22T02:04:44.2223636Z       }
2026-06-22T02:04:44.2223798Z     },
2026-06-22T02:04:44.2223956Z     {
2026-06-22T02:04:44.2224174Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-22T02:04:44.2228722Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-22T02:04:44.2228935Z       "requiredStages": [
2026-06-22T02:04:44.2229208Z         "doc",
2026-06-22T02:04:44.2229385Z         "impl",
2026-06-22T02:04:44.2229542Z         "unit",
2026-06-22T02:04:44.2229705Z         "int"
2026-06-22T02:04:44.2229847Z       ],
2026-06-22T02:04:44.2230024Z       "stages": {
2026-06-22T02:04:44.2230181Z         "doc": {
2026-06-22T02:04:44.2230368Z           "complete": true,
2026-06-22T02:04:44.2230538Z           "evidence": [
2026-06-22T02:04:44.2230692Z             {
2026-06-22T02:04:44.2230894Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2231068Z               "line": 333
2026-06-22T02:04:44.2231228Z             }
2026-06-22T02:04:44.2231377Z           ]
2026-06-22T02:04:44.2231538Z         },
2026-06-22T02:04:44.2231696Z         "impl": {
2026-06-22T02:04:44.2231872Z           "complete": true,
2026-06-22T02:04:44.2232054Z           "evidence": [
2026-06-22T02:04:44.2232207Z             {
2026-06-22T02:04:44.2232459Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2232812Z               "line": 494
2026-06-22T02:04:44.2232969Z             },
2026-06-22T02:04:44.2233129Z             {
2026-06-22T02:04:44.2233371Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2233548Z               "line": 499
2026-06-22T02:04:44.2233843Z             },
2026-06-22T02:04:44.2234000Z             {
2026-06-22T02:04:44.2234234Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2234405Z               "line": 874
2026-06-22T02:04:44.2234568Z             },
2026-06-22T02:04:44.2234720Z             {
2026-06-22T02:04:44.2234963Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2235132Z               "line": 915
2026-06-22T02:04:44.2235283Z             },
2026-06-22T02:04:44.2235437Z             {
2026-06-22T02:04:44.2235684Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2235864Z               "line": 926
2026-06-22T02:04:44.2236021Z             },
2026-06-22T02:04:44.2236200Z             {
2026-06-22T02:04:44.2236429Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.2236610Z               "line": 358
2026-06-22T02:04:44.2236768Z             }
2026-06-22T02:04:44.2236925Z           ]
2026-06-22T02:04:44.2237087Z         },
2026-06-22T02:04:44.2237249Z         "int": {
2026-06-22T02:04:44.2237430Z           "complete": true,
2026-06-22T02:04:44.2237602Z           "evidence": [
2026-06-22T02:04:44.2237759Z             {
2026-06-22T02:04:44.2238004Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-22T02:04:44.2238174Z               "line": 30
2026-06-22T02:04:44.2238342Z             }
2026-06-22T02:04:44.2238493Z           ]
2026-06-22T02:04:44.2238655Z         },
2026-06-22T02:04:44.2238815Z         "unit": {
2026-06-22T02:04:44.2239059Z           "complete": true,
2026-06-22T02:04:44.2239692Z           "evidence": [
2026-06-22T02:04:44.2239912Z             {
2026-06-22T02:04:44.2240135Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2240288Z               "line": 1493
2026-06-22T02:04:44.2240421Z             },
2026-06-22T02:04:44.2240537Z             {
2026-06-22T02:04:44.2240727Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2240861Z               "line": 1518
2026-06-22T02:04:44.2240984Z             },
2026-06-22T02:04:44.2241098Z             {
2026-06-22T02:04:44.2241271Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2241407Z               "line": 1535
2026-06-22T02:04:44.2241513Z             },
2026-06-22T02:04:44.2241628Z             {
2026-06-22T02:04:44.2241808Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2241932Z               "line": 1578
2026-06-22T02:04:44.2242060Z             }
2026-06-22T02:04:44.2242190Z           ]
2026-06-22T02:04:44.2242309Z         }
2026-06-22T02:04:44.2242418Z       }
2026-06-22T02:04:44.2242533Z     },
2026-06-22T02:04:44.2242647Z     {
2026-06-22T02:04:44.2242848Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-22T02:04:44.2246225Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-22T02:04:44.2246668Z       "requiredStages": [],
2026-06-22T02:04:44.2246793Z       "stages": {
2026-06-22T02:04:44.2246923Z         "doc": {
2026-06-22T02:04:44.2247062Z           "complete": false,
2026-06-22T02:04:44.2247198Z           "evidence": []
2026-06-22T02:04:44.2247323Z         },
2026-06-22T02:04:44.2247576Z         "impl": {
2026-06-22T02:04:44.2247724Z           "complete": false,
2026-06-22T02:04:44.2247837Z           "evidence": []
2026-06-22T02:04:44.2247962Z         },
2026-06-22T02:04:44.2248085Z         "int": {
2026-06-22T02:04:44.2248220Z           "complete": false,
2026-06-22T02:04:44.2248338Z           "evidence": []
2026-06-22T02:04:44.2248472Z         },
2026-06-22T02:04:44.2248616Z         "unit": {
2026-06-22T02:04:44.2248739Z           "complete": false,
2026-06-22T02:04:44.2248874Z           "evidence": []
2026-06-22T02:04:44.2249090Z         }
2026-06-22T02:04:44.2249210Z       }
2026-06-22T02:04:44.2249318Z     },
2026-06-22T02:04:44.2249441Z     {
2026-06-22T02:04:44.2249651Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-22T02:04:44.2254043Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-22T02:04:44.2254222Z       "requiredStages": [
2026-06-22T02:04:44.2254326Z         "impl",
2026-06-22T02:04:44.2254440Z         "unit",
2026-06-22T02:04:44.2254543Z         "int"
2026-06-22T02:04:44.2254649Z       ],
2026-06-22T02:04:44.2254750Z       "stages": {
2026-06-22T02:04:44.2254853Z         "doc": {
2026-06-22T02:04:44.2254963Z           "complete": false,
2026-06-22T02:04:44.2255088Z           "evidence": []
2026-06-22T02:04:44.2255192Z         },
2026-06-22T02:04:44.2255293Z         "impl": {
2026-06-22T02:04:44.2255407Z           "complete": true,
2026-06-22T02:04:44.2255516Z           "evidence": [
2026-06-22T02:04:44.2255632Z             {
2026-06-22T02:04:44.2255783Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2255894Z               "line": 570
2026-06-22T02:04:44.2256003Z             },
2026-06-22T02:04:44.2256107Z             {
2026-06-22T02:04:44.2256257Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2256379Z               "line": 594
2026-06-22T02:04:44.2256490Z             },
2026-06-22T02:04:44.2256586Z             {
2026-06-22T02:04:44.2256733Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2256848Z               "line": 620
2026-06-22T02:04:44.2256953Z             },
2026-06-22T02:04:44.2257056Z             {
2026-06-22T02:04:44.2257198Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2257312Z               "line": 679
2026-06-22T02:04:44.2257411Z             },
2026-06-22T02:04:44.2257511Z             {
2026-06-22T02:04:44.2257654Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2257874Z               "line": 89
2026-06-22T02:04:44.2257983Z             },
2026-06-22T02:04:44.2258083Z             {
2026-06-22T02:04:44.2258222Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2258326Z               "line": 134
2026-06-22T02:04:44.2258431Z             }
2026-06-22T02:04:44.2258636Z           ]
2026-06-22T02:04:44.2258741Z         },
2026-06-22T02:04:44.2258847Z         "int": {
2026-06-22T02:04:44.2259032Z           "complete": true,
2026-06-22T02:04:44.2259153Z           "evidence": [
2026-06-22T02:04:44.2259241Z             {
2026-06-22T02:04:44.2259424Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-22T02:04:44.2259533Z               "line": 20
2026-06-22T02:04:44.2259632Z             }
2026-06-22T02:04:44.2259732Z           ]
2026-06-22T02:04:44.2259827Z         },
2026-06-22T02:04:44.2259935Z         "unit": {
2026-06-22T02:04:44.2260040Z           "complete": true,
2026-06-22T02:04:44.2260165Z           "evidence": [
2026-06-22T02:04:44.2260268Z             {
2026-06-22T02:04:44.2260413Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2260522Z               "line": 1047
2026-06-22T02:04:44.2260626Z             },
2026-06-22T02:04:44.2260727Z             {
2026-06-22T02:04:44.2260865Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2260974Z               "line": 445
2026-06-22T02:04:44.2261080Z             }
2026-06-22T02:04:44.2261179Z           ]
2026-06-22T02:04:44.2261284Z         }
2026-06-22T02:04:44.2261381Z       }
2026-06-22T02:04:44.2261485Z     },
2026-06-22T02:04:44.2261575Z     {
2026-06-22T02:04:44.2261728Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-22T02:04:44.2264425Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-22T02:04:44.2264574Z       "requiredStages": [
2026-06-22T02:04:44.2264673Z         "doc",
2026-06-22T02:04:44.2264787Z         "impl",
2026-06-22T02:04:44.2264887Z         "unit",
2026-06-22T02:04:44.2264995Z         "int"
2026-06-22T02:04:44.2265089Z       ],
2026-06-22T02:04:44.2265200Z       "stages": {
2026-06-22T02:04:44.2265305Z         "doc": {
2026-06-22T02:04:44.2265413Z           "complete": true,
2026-06-22T02:04:44.2265528Z           "evidence": [
2026-06-22T02:04:44.2265629Z             {
2026-06-22T02:04:44.2265771Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2265877Z               "line": 302
2026-06-22T02:04:44.2265972Z             }
2026-06-22T02:04:44.2266076Z           ]
2026-06-22T02:04:44.2266182Z         },
2026-06-22T02:04:44.2266292Z         "impl": {
2026-06-22T02:04:44.2266401Z           "complete": true,
2026-06-22T02:04:44.2266526Z           "evidence": [
2026-06-22T02:04:44.2266621Z             {
2026-06-22T02:04:44.2266774Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.2266892Z               "line": 108
2026-06-22T02:04:44.2266987Z             },
2026-06-22T02:04:44.2267094Z             {
2026-06-22T02:04:44.2267235Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2267350Z               "line": 921
2026-06-22T02:04:44.2267465Z             },
2026-06-22T02:04:44.2267564Z             {
2026-06-22T02:04:44.2267839Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2267947Z               "line": 1137
2026-06-22T02:04:44.2268052Z             },
2026-06-22T02:04:44.2268148Z             {
2026-06-22T02:04:44.2268304Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2268411Z               "line": 23
2026-06-22T02:04:44.2268624Z             },
2026-06-22T02:04:44.2268735Z             {
2026-06-22T02:04:44.2268891Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2269106Z               "line": 113
2026-06-22T02:04:44.2269215Z             },
2026-06-22T02:04:44.2269316Z             {
2026-06-22T02:04:44.2269454Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2269554Z               "line": 158
2026-06-22T02:04:44.2269655Z             },
2026-06-22T02:04:44.2269755Z             {
2026-06-22T02:04:44.2269902Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2270013Z               "line": 218
2026-06-22T02:04:44.2270116Z             },
2026-06-22T02:04:44.2270216Z             {
2026-06-22T02:04:44.2270359Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2270466Z               "line": 261
2026-06-22T02:04:44.2270565Z             },
2026-06-22T02:04:44.2270672Z             {
2026-06-22T02:04:44.2270819Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2270919Z               "line": 275
2026-06-22T02:04:44.2271020Z             },
2026-06-22T02:04:44.2271119Z             {
2026-06-22T02:04:44.2271268Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2271368Z               "line": 320
2026-06-22T02:04:44.2271472Z             },
2026-06-22T02:04:44.2271583Z             {
2026-06-22T02:04:44.2271725Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2271830Z               "line": 347
2026-06-22T02:04:44.2271936Z             },
2026-06-22T02:04:44.2272035Z             {
2026-06-22T02:04:44.2272178Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2272284Z               "line": 359
2026-06-22T02:04:44.2272383Z             },
2026-06-22T02:04:44.2272488Z             {
2026-06-22T02:04:44.2272641Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2272750Z               "line": 373
2026-06-22T02:04:44.2272856Z             },
2026-06-22T02:04:44.2272956Z             {
2026-06-22T02:04:44.2273111Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2273217Z               "line": 400
2026-06-22T02:04:44.2273317Z             },
2026-06-22T02:04:44.2273412Z             {
2026-06-22T02:04:44.2273556Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2273669Z               "line": 643
2026-06-22T02:04:44.2273774Z             },
2026-06-22T02:04:44.2273880Z             {
2026-06-22T02:04:44.2274022Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2274127Z               "line": 989
2026-06-22T02:04:44.2274237Z             },
2026-06-22T02:04:44.2274337Z             {
2026-06-22T02:04:44.2274491Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2274604Z               "line": 274
2026-06-22T02:04:44.2274709Z             },
2026-06-22T02:04:44.2274820Z             {
2026-06-22T02:04:44.2274956Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2275072Z               "line": 1192
2026-06-22T02:04:44.2275172Z             },
2026-06-22T02:04:44.2275281Z             {
2026-06-22T02:04:44.2275423Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2275527Z               "line": 1264
2026-06-22T02:04:44.2275635Z             },
2026-06-22T02:04:44.2275736Z             {
2026-06-22T02:04:44.2280234Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2280390Z               "line": 1276
2026-06-22T02:04:44.2280501Z             },
2026-06-22T02:04:44.2280767Z             {
2026-06-22T02:04:44.2280929Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2281045Z               "line": 1894
2026-06-22T02:04:44.2281150Z             },
2026-06-22T02:04:44.2281256Z             {
2026-06-22T02:04:44.2281403Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2281642Z               "line": 188
2026-06-22T02:04:44.2281751Z             },
2026-06-22T02:04:44.2281852Z             {
2026-06-22T02:04:44.2282008Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2282119Z               "line": 265
2026-06-22T02:04:44.2282228Z             },
2026-06-22T02:04:44.2282328Z             {
2026-06-22T02:04:44.2282477Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2282585Z               "line": 276
2026-06-22T02:04:44.2282681Z             },
2026-06-22T02:04:44.2282787Z             {
2026-06-22T02:04:44.2282928Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2283044Z               "line": 329
2026-06-22T02:04:44.2283145Z             },
2026-06-22T02:04:44.2283243Z             {
2026-06-22T02:04:44.2283393Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2283502Z               "line": 56
2026-06-22T02:04:44.2283610Z             },
2026-06-22T02:04:44.2283710Z             {
2026-06-22T02:04:44.2283863Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2283967Z               "line": 188
2026-06-22T02:04:44.2284072Z             },
2026-06-22T02:04:44.2284178Z             {
2026-06-22T02:04:44.2284320Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:04:44.2284431Z               "line": 82
2026-06-22T02:04:44.2284526Z             },
2026-06-22T02:04:44.2284630Z             {
2026-06-22T02:04:44.2284774Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2284892Z               "line": 308
2026-06-22T02:04:44.2285007Z             },
2026-06-22T02:04:44.2285107Z             {
2026-06-22T02:04:44.2285255Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.2285356Z               "line": 424
2026-06-22T02:04:44.2285464Z             },
2026-06-22T02:04:44.2285569Z             {
2026-06-22T02:04:44.2285695Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2285812Z               "line": 2006
2026-06-22T02:04:44.2285912Z             }
2026-06-22T02:04:44.2286022Z           ]
2026-06-22T02:04:44.2286124Z         },
2026-06-22T02:04:44.2286233Z         "int": {
2026-06-22T02:04:44.2286348Z           "complete": true,
2026-06-22T02:04:44.2286467Z           "evidence": [
2026-06-22T02:04:44.2286572Z             {
2026-06-22T02:04:44.2286716Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:04:44.2286830Z               "line": 57
2026-06-22T02:04:44.2286925Z             },
2026-06-22T02:04:44.2287021Z             {
2026-06-22T02:04:44.2287154Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T02:04:44.2287265Z               "line": 41
2026-06-22T02:04:44.2287374Z             }
2026-06-22T02:04:44.2287473Z           ]
2026-06-22T02:04:44.2287574Z         },
2026-06-22T02:04:44.2287678Z         "unit": {
2026-06-22T02:04:44.2287788Z           "complete": true,
2026-06-22T02:04:44.2287899Z           "evidence": [
2026-06-22T02:04:44.2287998Z             {
2026-06-22T02:04:44.2288150Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.2288261Z               "line": 532
2026-06-22T02:04:44.2288370Z             },
2026-06-22T02:04:44.2288465Z             {
2026-06-22T02:04:44.2288619Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.2288727Z               "line": 757
2026-06-22T02:04:44.2288826Z             },
2026-06-22T02:04:44.2289020Z             {
2026-06-22T02:04:44.2289172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2289283Z               "line": 1067
2026-06-22T02:04:44.2289377Z             },
2026-06-22T02:04:44.2289588Z             {
2026-06-22T02:04:44.2289744Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2289850Z               "line": 1101
2026-06-22T02:04:44.2289960Z             },
2026-06-22T02:04:44.2290058Z             {
2026-06-22T02:04:44.2290203Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2290407Z               "line": 1143
2026-06-22T02:04:44.2290518Z             },
2026-06-22T02:04:44.2290621Z             {
2026-06-22T02:04:44.2290766Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2290871Z               "line": 1215
2026-06-22T02:04:44.2290970Z             },
2026-06-22T02:04:44.2291071Z             {
2026-06-22T02:04:44.2291209Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2291322Z               "line": 1228
2026-06-22T02:04:44.2291427Z             },
2026-06-22T02:04:44.2291526Z             {
2026-06-22T02:04:44.2291672Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2291792Z               "line": 1251
2026-06-22T02:04:44.2291897Z             },
2026-06-22T02:04:44.2291991Z             {
2026-06-22T02:04:44.2292136Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2292240Z               "line": 1277
2026-06-22T02:04:44.2292349Z             },
2026-06-22T02:04:44.2292455Z             {
2026-06-22T02:04:44.2292597Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2292703Z               "line": 1291
2026-06-22T02:04:44.2292807Z             },
2026-06-22T02:04:44.2292907Z             {
2026-06-22T02:04:44.2293051Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2293160Z               "line": 1315
2026-06-22T02:04:44.2293265Z             },
2026-06-22T02:04:44.2293371Z             {
2026-06-22T02:04:44.2293513Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2293628Z               "line": 1447
2026-06-22T02:04:44.2293733Z             },
2026-06-22T02:04:44.2293837Z             {
2026-06-22T02:04:44.2293977Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2294090Z               "line": 1623
2026-06-22T02:04:44.2294189Z             },
2026-06-22T02:04:44.2294284Z             {
2026-06-22T02:04:44.2294438Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2294542Z               "line": 1678
2026-06-22T02:04:44.2294642Z             },
2026-06-22T02:04:44.2294743Z             {
2026-06-22T02:04:44.2294894Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2295000Z               "line": 1724
2026-06-22T02:04:44.2295109Z             },
2026-06-22T02:04:44.2295214Z             {
2026-06-22T02:04:44.2295357Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2295476Z               "line": 1769
2026-06-22T02:04:44.2295563Z             },
2026-06-22T02:04:44.2295677Z             {
2026-06-22T02:04:44.2295820Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2295931Z               "line": 1813
2026-06-22T02:04:44.2296029Z             },
2026-06-22T02:04:44.2296134Z             {
2026-06-22T02:04:44.2296279Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2296396Z               "line": 1855
2026-06-22T02:04:44.2296500Z             },
2026-06-22T02:04:44.2296601Z             {
2026-06-22T02:04:44.2296751Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2296860Z               "line": 2229
2026-06-22T02:04:44.2296962Z             },
2026-06-22T02:04:44.2297065Z             {
2026-06-22T02:04:44.2297204Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2297323Z               "line": 217
2026-06-22T02:04:44.2297418Z             },
2026-06-22T02:04:44.2297525Z             {
2026-06-22T02:04:44.2297671Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2297863Z               "line": 233
2026-06-22T02:04:44.2297963Z             },
2026-06-22T02:04:44.2298067Z             {
2026-06-22T02:04:44.2298215Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2298319Z               "line": 254
2026-06-22T02:04:44.2298425Z             },
2026-06-22T02:04:44.2298605Z             {
2026-06-22T02:04:44.2298750Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2298859Z               "line": 265
2026-06-22T02:04:44.2299021Z             },
2026-06-22T02:04:44.2299122Z             {
2026-06-22T02:04:44.2299273Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2299377Z               "line": 278
2026-06-22T02:04:44.2299486Z             },
2026-06-22T02:04:44.2299570Z             {
2026-06-22T02:04:44.2299723Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2299829Z               "line": 289
2026-06-22T02:04:44.2299933Z             },
2026-06-22T02:04:44.2300047Z             {
2026-06-22T02:04:44.2300186Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2300299Z               "line": 301
2026-06-22T02:04:44.2300401Z             },
2026-06-22T02:04:44.2300505Z             {
2026-06-22T02:04:44.2300648Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2300773Z               "line": 312
2026-06-22T02:04:44.2300877Z             },
2026-06-22T02:04:44.2300977Z             {
2026-06-22T02:04:44.2301120Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2301215Z               "line": 323
2026-06-22T02:04:44.2301316Z             },
2026-06-22T02:04:44.2301421Z             {
2026-06-22T02:04:44.2301573Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2301684Z               "line": 332
2026-06-22T02:04:44.2301783Z             },
2026-06-22T02:04:44.2301891Z             {
2026-06-22T02:04:44.2302029Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2302147Z               "line": 342
2026-06-22T02:04:44.2302246Z             },
2026-06-22T02:04:44.2302352Z             {
2026-06-22T02:04:44.2302495Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:04:44.2302599Z               "line": 358
2026-06-22T02:04:44.2302701Z             },
2026-06-22T02:04:44.2302809Z             {
2026-06-22T02:04:44.2302949Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2303057Z               "line": 758
2026-06-22T02:04:44.2303157Z             },
2026-06-22T02:04:44.2303259Z             {
2026-06-22T02:04:44.2303396Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2303505Z               "line": 794
2026-06-22T02:04:44.2303607Z             },
2026-06-22T02:04:44.2303711Z             {
2026-06-22T02:04:44.2303849Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.2303955Z               "line": 966
2026-06-22T02:04:44.2304068Z             },
2026-06-22T02:04:44.2304169Z             {
2026-06-22T02:04:44.2304321Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:04:44.2304422Z               "line": 145
2026-06-22T02:04:44.2304523Z             },
2026-06-22T02:04:44.2304632Z             {
2026-06-22T02:04:44.2304768Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:04:44.2304878Z               "line": 224
2026-06-22T02:04:44.2304984Z             },
2026-06-22T02:04:44.2305082Z             {
2026-06-22T02:04:44.2305217Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:04:44.2305322Z               "line": 293
2026-06-22T02:04:44.2305435Z             },
2026-06-22T02:04:44.2305532Z             {
2026-06-22T02:04:44.2305670Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T02:04:44.2305774Z               "line": 17
2026-06-22T02:04:44.2305885Z             },
2026-06-22T02:04:44.2305980Z             {
2026-06-22T02:04:44.2306128Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T02:04:44.2306351Z               "line": 104
2026-06-22T02:04:44.2306453Z             }
2026-06-22T02:04:44.2306557Z           ]
2026-06-22T02:04:44.2306656Z         }
2026-06-22T02:04:44.2306762Z       }
2026-06-22T02:04:44.2306858Z     },
2026-06-22T02:04:44.2306965Z     {
2026-06-22T02:04:44.2307203Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-22T02:04:44.2310389Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-22T02:04:44.2310554Z       "requiredStages": [
2026-06-22T02:04:44.2310665Z         "doc",
2026-06-22T02:04:44.2310770Z         "impl",
2026-06-22T02:04:44.2310869Z         "unit",
2026-06-22T02:04:44.2310966Z         "int"
2026-06-22T02:04:44.2311070Z       ],
2026-06-22T02:04:44.2311184Z       "stages": {
2026-06-22T02:04:44.2311281Z         "doc": {
2026-06-22T02:04:44.2311394Z           "complete": true,
2026-06-22T02:04:44.2311494Z           "evidence": [
2026-06-22T02:04:44.2311596Z             {
2026-06-22T02:04:44.2311732Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2311852Z               "line": 388
2026-06-22T02:04:44.2311957Z             }
2026-06-22T02:04:44.2312047Z           ]
2026-06-22T02:04:44.2312157Z         },
2026-06-22T02:04:44.2312259Z         "impl": {
2026-06-22T02:04:44.2312381Z           "complete": true,
2026-06-22T02:04:44.2312494Z           "evidence": [
2026-06-22T02:04:44.2312599Z             {
2026-06-22T02:04:44.2312754Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.2312864Z               "line": 773
2026-06-22T02:04:44.2312970Z             },
2026-06-22T02:04:44.2313069Z             {
2026-06-22T02:04:44.2313213Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.2313323Z               "line": 796
2026-06-22T02:04:44.2313426Z             }
2026-06-22T02:04:44.2313537Z           ]
2026-06-22T02:04:44.2313632Z         },
2026-06-22T02:04:44.2313736Z         "int": {
2026-06-22T02:04:44.2313852Z           "complete": true,
2026-06-22T02:04:44.2313965Z           "evidence": [
2026-06-22T02:04:44.2314056Z             {
2026-06-22T02:04:44.2314214Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:04:44.2314328Z               "line": 228
2026-06-22T02:04:44.2314429Z             },
2026-06-22T02:04:44.2314534Z             {
2026-06-22T02:04:44.2314686Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:04:44.2314801Z               "line": 468
2026-06-22T02:04:44.2314895Z             }
2026-06-22T02:04:44.2314991Z           ]
2026-06-22T02:04:44.2315097Z         },
2026-06-22T02:04:44.2315196Z         "unit": {
2026-06-22T02:04:44.2315309Z           "complete": true,
2026-06-22T02:04:44.2315414Z           "evidence": [
2026-06-22T02:04:44.2315515Z             {
2026-06-22T02:04:44.2315647Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.2315758Z               "line": 1495
2026-06-22T02:04:44.2315868Z             }
2026-06-22T02:04:44.2315967Z           ]
2026-06-22T02:04:44.2316068Z         }
2026-06-22T02:04:44.2316300Z       }
2026-06-22T02:04:44.2316402Z     },
2026-06-22T02:04:44.2316501Z     {
2026-06-22T02:04:44.2316654Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-22T02:04:44.2320350Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-22T02:04:44.2320612Z       "requiredStages": [
2026-06-22T02:04:44.2320719Z         "doc",
2026-06-22T02:04:44.2320829Z         "impl",
2026-06-22T02:04:44.2320939Z         "unit"
2026-06-22T02:04:44.2321029Z       ],
2026-06-22T02:04:44.2321138Z       "stages": {
2026-06-22T02:04:44.2321244Z         "doc": {
2026-06-22T02:04:44.2321358Z           "complete": true,
2026-06-22T02:04:44.2321463Z           "evidence": [
2026-06-22T02:04:44.2321573Z             {
2026-06-22T02:04:44.2321701Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2321812Z               "line": 395
2026-06-22T02:04:44.2321921Z             }
2026-06-22T02:04:44.2322026Z           ]
2026-06-22T02:04:44.2322117Z         },
2026-06-22T02:04:44.2322217Z         "impl": {
2026-06-22T02:04:44.2322335Z           "complete": true,
2026-06-22T02:04:44.2322441Z           "evidence": [
2026-06-22T02:04:44.2322537Z             {
2026-06-22T02:04:44.2322674Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2322785Z               "line": 75
2026-06-22T02:04:44.2322884Z             }
2026-06-22T02:04:44.2322988Z           ]
2026-06-22T02:04:44.2323092Z         },
2026-06-22T02:04:44.2323192Z         "int": {
2026-06-22T02:04:44.2323310Z           "complete": false,
2026-06-22T02:04:44.2323429Z           "evidence": []
2026-06-22T02:04:44.2323525Z         },
2026-06-22T02:04:44.2323629Z         "unit": {
2026-06-22T02:04:44.2323739Z           "complete": true,
2026-06-22T02:04:44.2323854Z           "evidence": [
2026-06-22T02:04:44.2323944Z             {
2026-06-22T02:04:44.2324097Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2324206Z               "line": 632
2026-06-22T02:04:44.2324306Z             }
2026-06-22T02:04:44.2324408Z           ]
2026-06-22T02:04:44.2324507Z         }
2026-06-22T02:04:44.2324611Z       }
2026-06-22T02:04:44.2324703Z     },
2026-06-22T02:04:44.2324812Z     {
2026-06-22T02:04:44.2324964Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-22T02:04:44.2325160Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-22T02:04:44.2325274Z       "requiredStages": [
2026-06-22T02:04:44.2325376Z         "impl",
2026-06-22T02:04:44.2325479Z         "unit"
2026-06-22T02:04:44.2325580Z       ],
2026-06-22T02:04:44.2325691Z       "stages": {
2026-06-22T02:04:44.2325798Z         "doc": {
2026-06-22T02:04:44.2325902Z           "complete": false,
2026-06-22T02:04:44.2326013Z           "evidence": []
2026-06-22T02:04:44.2326113Z         },
2026-06-22T02:04:44.2326222Z         "impl": {
2026-06-22T02:04:44.2326442Z           "complete": true,
2026-06-22T02:04:44.2326555Z           "evidence": [
2026-06-22T02:04:44.2326662Z             {
2026-06-22T02:04:44.2326804Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2326918Z               "line": 172
2026-06-22T02:04:44.2327019Z             },
2026-06-22T02:04:44.2327199Z             {
2026-06-22T02:04:44.2327334Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.2327448Z               "line": 18
2026-06-22T02:04:44.2327558Z             },
2026-06-22T02:04:44.2327658Z             {
2026-06-22T02:04:44.2327800Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.2327907Z               "line": 100
2026-06-22T02:04:44.2328002Z             }
2026-06-22T02:04:44.2328100Z           ]
2026-06-22T02:04:44.2328200Z         },
2026-06-22T02:04:44.2328295Z         "int": {
2026-06-22T02:04:44.2328407Z           "complete": false,
2026-06-22T02:04:44.2328512Z           "evidence": []
2026-06-22T02:04:44.2328613Z         },
2026-06-22T02:04:44.2328722Z         "unit": {
2026-06-22T02:04:44.2328832Z           "complete": true,
2026-06-22T02:04:44.2329023Z           "evidence": [
2026-06-22T02:04:44.2329127Z             {
2026-06-22T02:04:44.2329266Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2329375Z               "line": 857
2026-06-22T02:04:44.2329466Z             },
2026-06-22T02:04:44.2329567Z             {
2026-06-22T02:04:44.2329686Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.2329800Z               "line": 161
2026-06-22T02:04:44.2329910Z             },
2026-06-22T02:04:44.2330005Z             {
2026-06-22T02:04:44.2330135Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.2330244Z               "line": 233
2026-06-22T02:04:44.2330343Z             }
2026-06-22T02:04:44.2330445Z           ]
2026-06-22T02:04:44.2330545Z         }
2026-06-22T02:04:44.2330649Z       }
2026-06-22T02:04:44.2330745Z     },
2026-06-22T02:04:44.2330850Z     {
2026-06-22T02:04:44.2330981Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-22T02:04:44.2331442Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-22T02:04:44.2331561Z       "requiredStages": [
2026-06-22T02:04:44.2331665Z         "impl",
2026-06-22T02:04:44.2331781Z         "unit"
2026-06-22T02:04:44.2331881Z       ],
2026-06-22T02:04:44.2331990Z       "stages": {
2026-06-22T02:04:44.2332091Z         "doc": {
2026-06-22T02:04:44.2332205Z           "complete": true,
2026-06-22T02:04:44.2332314Z           "evidence": [
2026-06-22T02:04:44.2332415Z             {
2026-06-22T02:04:44.2332548Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2332652Z               "line": 220
2026-06-22T02:04:44.2332759Z             }
2026-06-22T02:04:44.2332862Z           ]
2026-06-22T02:04:44.2332967Z         },
2026-06-22T02:04:44.2333078Z         "impl": {
2026-06-22T02:04:44.2333191Z           "complete": true,
2026-06-22T02:04:44.2333302Z           "evidence": [
2026-06-22T02:04:44.2333407Z             {
2026-06-22T02:04:44.2333558Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.2333662Z               "line": 316
2026-06-22T02:04:44.2333775Z             },
2026-06-22T02:04:44.2333884Z             {
2026-06-22T02:04:44.2334033Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2334137Z               "line": 356
2026-06-22T02:04:44.2334236Z             },
2026-06-22T02:04:44.2334338Z             {
2026-06-22T02:04:44.2334480Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2334580Z               "line": 578
2026-06-22T02:04:44.2334690Z             },
2026-06-22T02:04:44.2334790Z             {
2026-06-22T02:04:44.2334924Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2335029Z               "line": 77
2026-06-22T02:04:44.2335244Z             }
2026-06-22T02:04:44.2335343Z           ]
2026-06-22T02:04:44.2335448Z         },
2026-06-22T02:04:44.2335559Z         "int": {
2026-06-22T02:04:44.2335668Z           "complete": false,
2026-06-22T02:04:44.2335777Z           "evidence": []
2026-06-22T02:04:44.2335878Z         },
2026-06-22T02:04:44.2336087Z         "unit": {
2026-06-22T02:04:44.2336198Z           "complete": true,
2026-06-22T02:04:44.2336312Z           "evidence": [
2026-06-22T02:04:44.2336420Z             {
2026-06-22T02:04:44.2336568Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2336683Z               "line": 747
2026-06-22T02:04:44.2336782Z             },
2026-06-22T02:04:44.2336893Z             {
2026-06-22T02:04:44.2337030Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2337135Z               "line": 785
2026-06-22T02:04:44.2337231Z             },
2026-06-22T02:04:44.2337331Z             {
2026-06-22T02:04:44.2337460Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2337579Z               "line": 166
2026-06-22T02:04:44.2337688Z             }
2026-06-22T02:04:44.2337779Z           ]
2026-06-22T02:04:44.2337875Z         }
2026-06-22T02:04:44.2337979Z       }
2026-06-22T02:04:44.2338079Z     },
2026-06-22T02:04:44.2338176Z     {
2026-06-22T02:04:44.2338322Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-22T02:04:44.2338907Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-22T02:04:44.2339092Z       "requiredStages": [
2026-06-22T02:04:44.2339192Z         "impl",
2026-06-22T02:04:44.2339292Z         "unit"
2026-06-22T02:04:44.2339387Z       ],
2026-06-22T02:04:44.2339507Z       "stages": {
2026-06-22T02:04:44.2339597Z         "doc": {
2026-06-22T02:04:44.2339706Z           "complete": false,
2026-06-22T02:04:44.2339813Z           "evidence": []
2026-06-22T02:04:44.2339916Z         },
2026-06-22T02:04:44.2340021Z         "impl": {
2026-06-22T02:04:44.2340132Z           "complete": true,
2026-06-22T02:04:44.2340246Z           "evidence": [
2026-06-22T02:04:44.2340346Z             {
2026-06-22T02:04:44.2340499Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:04:44.2340607Z               "line": 22
2026-06-22T02:04:44.2340709Z             },
2026-06-22T02:04:44.2340804Z             {
2026-06-22T02:04:44.2340936Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.2341048Z               "line": 487
2026-06-22T02:04:44.2341151Z             },
2026-06-22T02:04:44.2341251Z             {
2026-06-22T02:04:44.2341396Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:04:44.2341494Z               "line": 17
2026-06-22T02:04:44.2341599Z             },
2026-06-22T02:04:44.2341694Z             {
2026-06-22T02:04:44.2341839Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:04:44.2341939Z               "line": 147
2026-06-22T02:04:44.2342050Z             },
2026-06-22T02:04:44.2342150Z             {
2026-06-22T02:04:44.2342293Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2342402Z               "line": 226
2026-06-22T02:04:44.2342506Z             },
2026-06-22T02:04:44.2342613Z             {
2026-06-22T02:04:44.2342746Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2342855Z               "line": 251
2026-06-22T02:04:44.2342951Z             },
2026-06-22T02:04:44.2343055Z             {
2026-06-22T02:04:44.2343199Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2343305Z               "line": 277
2026-06-22T02:04:44.2343412Z             },
2026-06-22T02:04:44.2343513Z             {
2026-06-22T02:04:44.2343657Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.2343766Z               "line": 124
2026-06-22T02:04:44.2343867Z             },
2026-06-22T02:04:44.2344084Z             {
2026-06-22T02:04:44.2344227Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.2344331Z               "line": 224
2026-06-22T02:04:44.2344444Z             }
2026-06-22T02:04:44.2344540Z           ]
2026-06-22T02:04:44.2344646Z         },
2026-06-22T02:04:44.2344835Z         "int": {
2026-06-22T02:04:44.2344964Z           "complete": false,
2026-06-22T02:04:44.2345064Z           "evidence": []
2026-06-22T02:04:44.2345165Z         },
2026-06-22T02:04:44.2345265Z         "unit": {
2026-06-22T02:04:44.2345388Z           "complete": true,
2026-06-22T02:04:44.2345499Z           "evidence": [
2026-06-22T02:04:44.2345603Z             {
2026-06-22T02:04:44.2345746Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:04:44.2345838Z               "line": 63
2026-06-22T02:04:44.2345941Z             },
2026-06-22T02:04:44.2346051Z             {
2026-06-22T02:04:44.2346196Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:04:44.2346318Z               "line": 73
2026-06-22T02:04:44.2346419Z             },
2026-06-22T02:04:44.2346524Z             {
2026-06-22T02:04:44.2346662Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:04:44.2346777Z               "line": 85
2026-06-22T02:04:44.2346881Z             },
2026-06-22T02:04:44.2346990Z             {
2026-06-22T02:04:44.2347133Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:04:44.2347238Z               "line": 346
2026-06-22T02:04:44.2347342Z             },
2026-06-22T02:04:44.2347443Z             {
2026-06-22T02:04:44.2347576Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:04:44.2347690Z               "line": 281
2026-06-22T02:04:44.2347782Z             },
2026-06-22T02:04:44.2347887Z             {
2026-06-22T02:04:44.2348025Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:04:44.2348129Z               "line": 322
2026-06-22T02:04:44.2348234Z             },
2026-06-22T02:04:44.2348329Z             {
2026-06-22T02:04:44.2348473Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:04:44.2348568Z               "line": 360
2026-06-22T02:04:44.2348674Z             },
2026-06-22T02:04:44.2348778Z             {
2026-06-22T02:04:44.2348921Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2349117Z               "line": 688
2026-06-22T02:04:44.2349216Z             },
2026-06-22T02:04:44.2349325Z             {
2026-06-22T02:04:44.2349457Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.2349570Z               "line": 397
2026-06-22T02:04:44.2349671Z             },
2026-06-22T02:04:44.2349772Z             {
2026-06-22T02:04:44.2349913Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.2350024Z               "line": 440
2026-06-22T02:04:44.2350129Z             }
2026-06-22T02:04:44.2350218Z           ]
2026-06-22T02:04:44.2350325Z         }
2026-06-22T02:04:44.2350424Z       }
2026-06-22T02:04:44.2350533Z     },
2026-06-22T02:04:44.2350631Z     {
2026-06-22T02:04:44.2350758Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-22T02:04:44.2350997Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-22T02:04:44.2351106Z       "requiredStages": [
2026-06-22T02:04:44.2351216Z         "impl",
2026-06-22T02:04:44.2351317Z         "unit"
2026-06-22T02:04:44.2351420Z       ],
2026-06-22T02:04:44.2351516Z       "stages": {
2026-06-22T02:04:44.2351622Z         "doc": {
2026-06-22T02:04:44.2351731Z           "complete": false,
2026-06-22T02:04:44.2351836Z           "evidence": []
2026-06-22T02:04:44.2351946Z         },
2026-06-22T02:04:44.2352050Z         "impl": {
2026-06-22T02:04:44.2352168Z           "complete": true,
2026-06-22T02:04:44.2352268Z           "evidence": [
2026-06-22T02:04:44.2352376Z             {
2026-06-22T02:04:44.2352519Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:04:44.2352625Z               "line": 169
2026-06-22T02:04:44.2352848Z             }
2026-06-22T02:04:44.2352935Z           ]
2026-06-22T02:04:44.2353043Z         },
2026-06-22T02:04:44.2353148Z         "int": {
2026-06-22T02:04:44.2353263Z           "complete": true,
2026-06-22T02:04:44.2353386Z           "evidence": [
2026-06-22T02:04:44.2353482Z             {
2026-06-22T02:04:44.2353725Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T02:04:44.2353831Z               "line": 44
2026-06-22T02:04:44.2353935Z             },
2026-06-22T02:04:44.2354026Z             {
2026-06-22T02:04:44.2354155Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T02:04:44.2354260Z               "line": 66
2026-06-22T02:04:44.2354359Z             }
2026-06-22T02:04:44.2354470Z           ]
2026-06-22T02:04:44.2354565Z         },
2026-06-22T02:04:44.2354678Z         "unit": {
2026-06-22T02:04:44.2354788Z           "complete": true,
2026-06-22T02:04:44.2354901Z           "evidence": [
2026-06-22T02:04:44.2355014Z             {
2026-06-22T02:04:44.2355153Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:04:44.2355267Z               "line": 186
2026-06-22T02:04:44.2355367Z             },
2026-06-22T02:04:44.2355468Z             {
2026-06-22T02:04:44.2355605Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:04:44.2355715Z               "line": 238
2026-06-22T02:04:44.2355820Z             },
2026-06-22T02:04:44.2355920Z             {
2026-06-22T02:04:44.2356059Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:04:44.2356168Z               "line": 266
2026-06-22T02:04:44.2356272Z             }
2026-06-22T02:04:44.2356374Z           ]
2026-06-22T02:04:44.2356478Z         }
2026-06-22T02:04:44.2356587Z       }
2026-06-22T02:04:44.2356684Z     },
2026-06-22T02:04:44.2356789Z     {
2026-06-22T02:04:44.2356926Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-22T02:04:44.2363618Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-22T02:04:44.2363814Z       "requiredStages": [
2026-06-22T02:04:44.2364037Z         "impl",
2026-06-22T02:04:44.2364143Z         "unit",
2026-06-22T02:04:44.2364252Z         "int"
2026-06-22T02:04:44.2364352Z       ],
2026-06-22T02:04:44.2364463Z       "stages": {
2026-06-22T02:04:44.2364567Z         "doc": {
2026-06-22T02:04:44.2364677Z           "complete": false,
2026-06-22T02:04:44.2364886Z           "evidence": []
2026-06-22T02:04:44.2364978Z         },
2026-06-22T02:04:44.2365087Z         "impl": {
2026-06-22T02:04:44.2365195Z           "complete": true,
2026-06-22T02:04:44.2365309Z           "evidence": [
2026-06-22T02:04:44.2365414Z             {
2026-06-22T02:04:44.2365564Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.2365675Z               "line": 109
2026-06-22T02:04:44.2365776Z             },
2026-06-22T02:04:44.2365879Z             {
2026-06-22T02:04:44.2366028Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.2366142Z               "line": 156
2026-06-22T02:04:44.2366251Z             },
2026-06-22T02:04:44.2366362Z             {
2026-06-22T02:04:44.2366504Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.2366615Z               "line": 261
2026-06-22T02:04:44.2366724Z             },
2026-06-22T02:04:44.2366828Z             {
2026-06-22T02:04:44.2366977Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2367081Z               "line": 954
2026-06-22T02:04:44.2367181Z             }
2026-06-22T02:04:44.2367287Z           ]
2026-06-22T02:04:44.2367386Z         },
2026-06-22T02:04:44.2367501Z         "int": {
2026-06-22T02:04:44.2367607Z           "complete": true,
2026-06-22T02:04:44.2367724Z           "evidence": [
2026-06-22T02:04:44.2367830Z             {
2026-06-22T02:04:44.2367988Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.2368096Z               "line": 1051
2026-06-22T02:04:44.2368196Z             }
2026-06-22T02:04:44.2368301Z           ]
2026-06-22T02:04:44.2368405Z         },
2026-06-22T02:04:44.2368515Z         "unit": {
2026-06-22T02:04:44.2368621Z           "complete": true,
2026-06-22T02:04:44.2368734Z           "evidence": [
2026-06-22T02:04:44.2368845Z             {
2026-06-22T02:04:44.2369053Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2369159Z               "line": 1498
2026-06-22T02:04:44.2369269Z             }
2026-06-22T02:04:44.2369373Z           ]
2026-06-22T02:04:44.2369464Z         }
2026-06-22T02:04:44.2369570Z       }
2026-06-22T02:04:44.2369683Z     },
2026-06-22T02:04:44.2374003Z     {
2026-06-22T02:04:44.2374230Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-22T02:04:44.2377145Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-22T02:04:44.2377326Z       "requiredStages": [],
2026-06-22T02:04:44.2377441Z       "stages": {
2026-06-22T02:04:44.2377542Z         "doc": {
2026-06-22T02:04:44.2377670Z           "complete": false,
2026-06-22T02:04:44.2377789Z           "evidence": []
2026-06-22T02:04:44.2377890Z         },
2026-06-22T02:04:44.2378004Z         "impl": {
2026-06-22T02:04:44.2378114Z           "complete": false,
2026-06-22T02:04:44.2378380Z           "evidence": []
2026-06-22T02:04:44.2378486Z         },
2026-06-22T02:04:44.2378595Z         "int": {
2026-06-22T02:04:44.2378703Z           "complete": false,
2026-06-22T02:04:44.2378808Z           "evidence": []
2026-06-22T02:04:44.2378914Z         },
2026-06-22T02:04:44.2379199Z         "unit": {
2026-06-22T02:04:44.2379304Z           "complete": false,
2026-06-22T02:04:44.2379400Z           "evidence": []
2026-06-22T02:04:44.2379500Z         }
2026-06-22T02:04:44.2379605Z       }
2026-06-22T02:04:44.2379705Z     },
2026-06-22T02:04:44.2379806Z     {
2026-06-22T02:04:44.2379957Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-22T02:04:44.2384262Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-22T02:04:44.2384438Z       "requiredStages": [],
2026-06-22T02:04:44.2384543Z       "stages": {
2026-06-22T02:04:44.2384648Z         "doc": {
2026-06-22T02:04:44.2384762Z           "complete": false,
2026-06-22T02:04:44.2384878Z           "evidence": []
2026-06-22T02:04:44.2384977Z         },
2026-06-22T02:04:44.2385091Z         "impl": {
2026-06-22T02:04:44.2385202Z           "complete": false,
2026-06-22T02:04:44.2385306Z           "evidence": []
2026-06-22T02:04:44.2385406Z         },
2026-06-22T02:04:44.2385517Z         "int": {
2026-06-22T02:04:44.2385625Z           "complete": false,
2026-06-22T02:04:44.2385735Z           "evidence": []
2026-06-22T02:04:44.2385836Z         },
2026-06-22T02:04:44.2385940Z         "unit": {
2026-06-22T02:04:44.2386059Z           "complete": false,
2026-06-22T02:04:44.2386170Z           "evidence": []
2026-06-22T02:04:44.2386283Z         }
2026-06-22T02:04:44.2386382Z       }
2026-06-22T02:04:44.2386492Z     },
2026-06-22T02:04:44.2386600Z     {
2026-06-22T02:04:44.2386752Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-22T02:04:44.2401207Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-22T02:04:44.2401779Z       "requiredStages": [
2026-06-22T02:04:44.2401960Z         "doc",
2026-06-22T02:04:44.2402059Z         "impl",
2026-06-22T02:04:44.2402168Z         "unit",
2026-06-22T02:04:44.2402272Z         "int"
2026-06-22T02:04:44.2402367Z       ],
2026-06-22T02:04:44.2402476Z       "stages": {
2026-06-22T02:04:44.2402583Z         "doc": {
2026-06-22T02:04:44.2402777Z           "complete": true,
2026-06-22T02:04:44.2402877Z           "evidence": [
2026-06-22T02:04:44.2402986Z             {
2026-06-22T02:04:44.2403116Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2403235Z               "line": 468
2026-06-22T02:04:44.2403344Z             }
2026-06-22T02:04:44.2403435Z           ]
2026-06-22T02:04:44.2403549Z         },
2026-06-22T02:04:44.2403644Z         "impl": {
2026-06-22T02:04:44.2403760Z           "complete": true,
2026-06-22T02:04:44.2403868Z           "evidence": [
2026-06-22T02:04:44.2403978Z             {
2026-06-22T02:04:44.2404132Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2404236Z               "line": 348
2026-06-22T02:04:44.2404356Z             },
2026-06-22T02:04:44.2404461Z             {
2026-06-22T02:04:44.2404612Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2404723Z               "line": 1282
2026-06-22T02:04:44.2404827Z             },
2026-06-22T02:04:44.2404940Z             {
2026-06-22T02:04:44.2405102Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2405215Z               "line": 759
2026-06-22T02:04:44.2405320Z             }
2026-06-22T02:04:44.2405420Z           ]
2026-06-22T02:04:44.2405529Z         },
2026-06-22T02:04:44.2405629Z         "int": {
2026-06-22T02:04:44.2405758Z           "complete": true,
2026-06-22T02:04:44.2405872Z           "evidence": [
2026-06-22T02:04:44.2405983Z             {
2026-06-22T02:04:44.2406131Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.2406249Z               "line": 1206
2026-06-22T02:04:44.2406351Z             },
2026-06-22T02:04:44.2406455Z             {
2026-06-22T02:04:44.2406613Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.2406721Z               "line": 1307
2026-06-22T02:04:44.2406831Z             },
2026-06-22T02:04:44.2406928Z             {
2026-06-22T02:04:44.2407078Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.2407199Z               "line": 1169
2026-06-22T02:04:44.2407300Z             }
2026-06-22T02:04:44.2407412Z           ]
2026-06-22T02:04:44.2407511Z         },
2026-06-22T02:04:44.2407627Z         "unit": {
2026-06-22T02:04:44.2407738Z           "complete": true,
2026-06-22T02:04:44.2407862Z           "evidence": [
2026-06-22T02:04:44.2407958Z             {
2026-06-22T02:04:44.2408105Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2408230Z               "line": 2873
2026-06-22T02:04:44.2408335Z             }
2026-06-22T02:04:44.2408434Z           ]
2026-06-22T02:04:44.2408535Z         }
2026-06-22T02:04:44.2408645Z       }
2026-06-22T02:04:44.2408754Z     },
2026-06-22T02:04:44.2408855Z     {
2026-06-22T02:04:44.2409083Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-22T02:04:44.2409533Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-22T02:04:44.2409665Z       "requiredStages": [
2026-06-22T02:04:44.2409760Z         "impl",
2026-06-22T02:04:44.2409866Z         "unit",
2026-06-22T02:04:44.2409974Z         "int"
2026-06-22T02:04:44.2410075Z       ],
2026-06-22T02:04:44.2410186Z       "stages": {
2026-06-22T02:04:44.2410289Z         "doc": {
2026-06-22T02:04:44.2410402Z           "complete": false,
2026-06-22T02:04:44.2410508Z           "evidence": []
2026-06-22T02:04:44.2410618Z         },
2026-06-22T02:04:44.2410727Z         "impl": {
2026-06-22T02:04:44.2410838Z           "complete": true,
2026-06-22T02:04:44.2410947Z           "evidence": [
2026-06-22T02:04:44.2411041Z             {
2026-06-22T02:04:44.2411318Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2411419Z               "line": 178
2026-06-22T02:04:44.2411529Z             },
2026-06-22T02:04:44.2411633Z             {
2026-06-22T02:04:44.2411782Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2412000Z               "line": 226
2026-06-22T02:04:44.2412101Z             },
2026-06-22T02:04:44.2412210Z             {
2026-06-22T02:04:44.2412349Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.2412459Z               "line": 79
2026-06-22T02:04:44.2412567Z             },
2026-06-22T02:04:44.2412662Z             {
2026-06-22T02:04:44.2412804Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.2412912Z               "line": 52
2026-06-22T02:04:44.2413022Z             },
2026-06-22T02:04:44.2413123Z             {
2026-06-22T02:04:44.2413274Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2413390Z               "line": 263
2026-06-22T02:04:44.2413499Z             },
2026-06-22T02:04:44.2413608Z             {
2026-06-22T02:04:44.2413752Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2413861Z               "line": 27
2026-06-22T02:04:44.2413967Z             },
2026-06-22T02:04:44.2414072Z             {
2026-06-22T02:04:44.2414228Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2414334Z               "line": 79
2026-06-22T02:04:44.2414443Z             },
2026-06-22T02:04:44.2414543Z             {
2026-06-22T02:04:44.2414692Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2414811Z               "line": 102
2026-06-22T02:04:44.2414911Z             },
2026-06-22T02:04:44.2415016Z             {
2026-06-22T02:04:44.2415158Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2415269Z               "line": 116
2026-06-22T02:04:44.2415373Z             }
2026-06-22T02:04:44.2415477Z           ]
2026-06-22T02:04:44.2415587Z         },
2026-06-22T02:04:44.2415690Z         "int": {
2026-06-22T02:04:44.2415808Z           "complete": true,
2026-06-22T02:04:44.2415913Z           "evidence": [
2026-06-22T02:04:44.2416024Z             {
2026-06-22T02:04:44.2416175Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T02:04:44.2416291Z               "line": 43
2026-06-22T02:04:44.2416400Z             }
2026-06-22T02:04:44.2416495Z           ]
2026-06-22T02:04:44.2416596Z         },
2026-06-22T02:04:44.2416701Z         "unit": {
2026-06-22T02:04:44.2416824Z           "complete": true,
2026-06-22T02:04:44.2416935Z           "evidence": [
2026-06-22T02:04:44.2417039Z             {
2026-06-22T02:04:44.2417197Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2417305Z               "line": 678
2026-06-22T02:04:44.2417410Z             },
2026-06-22T02:04:44.2417511Z             {
2026-06-22T02:04:44.2417658Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2417773Z               "line": 495
2026-06-22T02:04:44.2417879Z             },
2026-06-22T02:04:44.2417987Z             {
2026-06-22T02:04:44.2418125Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2418238Z               "line": 124
2026-06-22T02:04:44.2418342Z             },
2026-06-22T02:04:44.2418451Z             {
2026-06-22T02:04:44.2418595Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2418699Z               "line": 143
2026-06-22T02:04:44.2418810Z             },
2026-06-22T02:04:44.2418915Z             {
2026-06-22T02:04:44.2419129Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2419239Z               "line": 160
2026-06-22T02:04:44.2419347Z             },
2026-06-22T02:04:44.2419444Z             {
2026-06-22T02:04:44.2419586Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2419700Z               "line": 187
2026-06-22T02:04:44.2419802Z             },
2026-06-22T02:04:44.2419906Z             {
2026-06-22T02:04:44.2420158Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:04:44.2420263Z               "line": 206
2026-06-22T02:04:44.2420364Z             },
2026-06-22T02:04:44.2420473Z             {
2026-06-22T02:04:44.2420621Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2420811Z               "line": 229
2026-06-22T02:04:44.2420916Z             }
2026-06-22T02:04:44.2421006Z           ]
2026-06-22T02:04:44.2421117Z         }
2026-06-22T02:04:44.2421216Z       }
2026-06-22T02:04:44.2421325Z     },
2026-06-22T02:04:44.2421431Z     {
2026-06-22T02:04:44.2421578Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-22T02:04:44.2422270Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-22T02:04:44.2422380Z       "requiredStages": [
2026-06-22T02:04:44.2422484Z         "impl",
2026-06-22T02:04:44.2422585Z         "unit"
2026-06-22T02:04:44.2422690Z       ],
2026-06-22T02:04:44.2422794Z       "stages": {
2026-06-22T02:04:44.2422899Z         "doc": {
2026-06-22T02:04:44.2423009Z           "complete": false,
2026-06-22T02:04:44.2423113Z           "evidence": []
2026-06-22T02:04:44.2423227Z         },
2026-06-22T02:04:44.2423336Z         "impl": {
2026-06-22T02:04:44.2423444Z           "complete": true,
2026-06-22T02:04:44.2423553Z           "evidence": [
2026-06-22T02:04:44.2423655Z             {
2026-06-22T02:04:44.2423801Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2423897Z               "line": 1223
2026-06-22T02:04:44.2424012Z             },
2026-06-22T02:04:44.2424116Z             {
2026-06-22T02:04:44.2424255Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2424374Z               "line": 1449
2026-06-22T02:04:44.2424478Z             }
2026-06-22T02:04:44.2424589Z           ]
2026-06-22T02:04:44.2424698Z         },
2026-06-22T02:04:44.2424813Z         "int": {
2026-06-22T02:04:44.2424932Z           "complete": false,
2026-06-22T02:04:44.2425046Z           "evidence": []
2026-06-22T02:04:44.2425156Z         },
2026-06-22T02:04:44.2425261Z         "unit": {
2026-06-22T02:04:44.2425385Z           "complete": true,
2026-06-22T02:04:44.2425491Z           "evidence": [
2026-06-22T02:04:44.2425600Z             {
2026-06-22T02:04:44.2425762Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:04:44.2425867Z               "line": 161
2026-06-22T02:04:44.2425980Z             }
2026-06-22T02:04:44.2426084Z           ]
2026-06-22T02:04:44.2426184Z         }
2026-06-22T02:04:44.2426292Z       }
2026-06-22T02:04:44.2426397Z     },
2026-06-22T02:04:44.2426502Z     {
2026-06-22T02:04:44.2426636Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-22T02:04:44.2428415Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-22T02:04:44.2428561Z       "requiredStages": [
2026-06-22T02:04:44.2428665Z         "impl",
2026-06-22T02:04:44.2428771Z         "unit"
2026-06-22T02:04:44.2428868Z       ],
2026-06-22T02:04:44.2429050Z       "stages": {
2026-06-22T02:04:44.2429151Z         "doc": {
2026-06-22T02:04:44.2429269Z           "complete": false,
2026-06-22T02:04:44.2429389Z           "evidence": []
2026-06-22T02:04:44.2429475Z         },
2026-06-22T02:04:44.2429588Z         "impl": {
2026-06-22T02:04:44.2429850Z           "complete": true,
2026-06-22T02:04:44.2429956Z           "evidence": [
2026-06-22T02:04:44.2430061Z             {
2026-06-22T02:04:44.2430213Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.2430324Z               "line": 257
2026-06-22T02:04:44.2430427Z             }
2026-06-22T02:04:44.2430667Z           ]
2026-06-22T02:04:44.2430765Z         },
2026-06-22T02:04:44.2430876Z         "int": {
2026-06-22T02:04:44.2430987Z           "complete": false,
2026-06-22T02:04:44.2431099Z           "evidence": []
2026-06-22T02:04:44.2431205Z         },
2026-06-22T02:04:44.2431306Z         "unit": {
2026-06-22T02:04:44.2431409Z           "complete": true,
2026-06-22T02:04:44.2431508Z           "evidence": [
2026-06-22T02:04:44.2431619Z             {
2026-06-22T02:04:44.2431762Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.2431871Z               "line": 360
2026-06-22T02:04:44.2431982Z             }
2026-06-22T02:04:44.2432076Z           ]
2026-06-22T02:04:44.2432191Z         }
2026-06-22T02:04:44.2432287Z       }
2026-06-22T02:04:44.2432391Z     },
2026-06-22T02:04:44.2432491Z     {
2026-06-22T02:04:44.2432630Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-22T02:04:44.2434457Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-22T02:04:44.2434586Z       "requiredStages": [
2026-06-22T02:04:44.2434695Z         "impl",
2026-06-22T02:04:44.2434797Z         "unit"
2026-06-22T02:04:44.2434906Z       ],
2026-06-22T02:04:44.2435019Z       "stages": {
2026-06-22T02:04:44.2435121Z         "doc": {
2026-06-22T02:04:44.2435239Z           "complete": false,
2026-06-22T02:04:44.2435348Z           "evidence": []
2026-06-22T02:04:44.2435459Z         },
2026-06-22T02:04:44.2435573Z         "impl": {
2026-06-22T02:04:44.2435687Z           "complete": true,
2026-06-22T02:04:44.2435793Z           "evidence": [
2026-06-22T02:04:44.2435897Z             {
2026-06-22T02:04:44.2436046Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2436160Z               "line": 1018
2026-06-22T02:04:44.2436260Z             },
2026-06-22T02:04:44.2436365Z             {
2026-06-22T02:04:44.2436507Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2436620Z               "line": 283
2026-06-22T02:04:44.2436726Z             },
2026-06-22T02:04:44.2436838Z             {
2026-06-22T02:04:44.2436976Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2437101Z               "line": 316
2026-06-22T02:04:44.2437210Z             },
2026-06-22T02:04:44.2437310Z             {
2026-06-22T02:04:44.2437453Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:04:44.2437567Z               "line": 26
2026-06-22T02:04:44.2437678Z             }
2026-06-22T02:04:44.2437787Z           ]
2026-06-22T02:04:44.2437896Z         },
2026-06-22T02:04:44.2438016Z         "int": {
2026-06-22T02:04:44.2438130Z           "complete": false,
2026-06-22T02:04:44.2438245Z           "evidence": []
2026-06-22T02:04:44.2438350Z         },
2026-06-22T02:04:44.2438458Z         "unit": {
2026-06-22T02:04:44.2438579Z           "complete": true,
2026-06-22T02:04:44.2438689Z           "evidence": [
2026-06-22T02:04:44.2438783Z             {
2026-06-22T02:04:44.2438923Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:04:44.2439116Z               "line": 271
2026-06-22T02:04:44.2439225Z             },
2026-06-22T02:04:44.2439335Z             {
2026-06-22T02:04:44.2439581Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:04:44.2439697Z               "line": 348
2026-06-22T02:04:44.2439800Z             }
2026-06-22T02:04:44.2439891Z           ]
2026-06-22T02:04:44.2439996Z         }
2026-06-22T02:04:44.2440096Z       }
2026-06-22T02:04:44.2440297Z     },
2026-06-22T02:04:44.2440406Z     {
2026-06-22T02:04:44.2440531Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-22T02:04:44.2440740Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-22T02:04:44.2440860Z       "requiredStages": [
2026-06-22T02:04:44.2440960Z         "impl",
2026-06-22T02:04:44.2441068Z         "unit"
2026-06-22T02:04:44.2441165Z       ],
2026-06-22T02:04:44.2441279Z       "stages": {
2026-06-22T02:04:44.2441388Z         "doc": {
2026-06-22T02:04:44.2441504Z           "complete": false,
2026-06-22T02:04:44.2441622Z           "evidence": []
2026-06-22T02:04:44.2441717Z         },
2026-06-22T02:04:44.2441828Z         "impl": {
2026-06-22T02:04:44.2441942Z           "complete": true,
2026-06-22T02:04:44.2442055Z           "evidence": [
2026-06-22T02:04:44.2442160Z             {
2026-06-22T02:04:44.2442298Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2442412Z               "line": 40
2026-06-22T02:04:44.2442514Z             },
2026-06-22T02:04:44.2442627Z             {
2026-06-22T02:04:44.2442761Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2442875Z               "line": 103
2026-06-22T02:04:44.2442984Z             },
2026-06-22T02:04:44.2443085Z             {
2026-06-22T02:04:44.2443218Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2443327Z               "line": 218
2026-06-22T02:04:44.2443434Z             },
2026-06-22T02:04:44.2443542Z             {
2026-06-22T02:04:44.2443705Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2443824Z               "line": 323
2026-06-22T02:04:44.2443919Z             }
2026-06-22T02:04:44.2444029Z           ]
2026-06-22T02:04:44.2444130Z         },
2026-06-22T02:04:44.2444243Z         "int": {
2026-06-22T02:04:44.2444347Z           "complete": false,
2026-06-22T02:04:44.2444452Z           "evidence": []
2026-06-22T02:04:44.2444550Z         },
2026-06-22T02:04:44.2444654Z         "unit": {
2026-06-22T02:04:44.2444780Z           "complete": true,
2026-06-22T02:04:44.2444889Z           "evidence": [
2026-06-22T02:04:44.2444998Z             {
2026-06-22T02:04:44.2445127Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2445241Z               "line": 361
2026-06-22T02:04:44.2445352Z             },
2026-06-22T02:04:44.2445456Z             {
2026-06-22T02:04:44.2445594Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2445700Z               "line": 433
2026-06-22T02:04:44.2445809Z             },
2026-06-22T02:04:44.2445913Z             {
2026-06-22T02:04:44.2446057Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2446161Z               "line": 496
2026-06-22T02:04:44.2446267Z             },
2026-06-22T02:04:44.2446377Z             {
2026-06-22T02:04:44.2446514Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2446625Z               "line": 517
2026-06-22T02:04:44.2446724Z             }
2026-06-22T02:04:44.2446839Z           ]
2026-06-22T02:04:44.2446945Z         }
2026-06-22T02:04:44.2447044Z       }
2026-06-22T02:04:44.2447152Z     },
2026-06-22T02:04:44.2447252Z     {
2026-06-22T02:04:44.2447394Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-22T02:04:44.2449819Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-22T02:04:44.2450194Z       "requiredStages": [
2026-06-22T02:04:44.2450308Z         "impl",
2026-06-22T02:04:44.2450413Z         "unit"
2026-06-22T02:04:44.2450514Z       ],
2026-06-22T02:04:44.2450623Z       "stages": {
2026-06-22T02:04:44.2450728Z         "doc": {
2026-06-22T02:04:44.2450847Z           "complete": false,
2026-06-22T02:04:44.2450957Z           "evidence": []
2026-06-22T02:04:44.2451057Z         },
2026-06-22T02:04:44.2451162Z         "impl": {
2026-06-22T02:04:44.2451277Z           "complete": true,
2026-06-22T02:04:44.2451390Z           "evidence": [
2026-06-22T02:04:44.2451496Z             {
2026-06-22T02:04:44.2451657Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.2451773Z               "line": 402
2026-06-22T02:04:44.2451877Z             },
2026-06-22T02:04:44.2451972Z             {
2026-06-22T02:04:44.2452121Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.2452229Z               "line": 446
2026-06-22T02:04:44.2452335Z             }
2026-06-22T02:04:44.2452441Z           ]
2026-06-22T02:04:44.2452534Z         },
2026-06-22T02:04:44.2452639Z         "int": {
2026-06-22T02:04:44.2452759Z           "complete": false,
2026-06-22T02:04:44.2452868Z           "evidence": []
2026-06-22T02:04:44.2452972Z         },
2026-06-22T02:04:44.2453079Z         "unit": {
2026-06-22T02:04:44.2453201Z           "complete": true,
2026-06-22T02:04:44.2453306Z           "evidence": [
2026-06-22T02:04:44.2453412Z             {
2026-06-22T02:04:44.2453568Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.2453679Z               "line": 910
2026-06-22T02:04:44.2453788Z             }
2026-06-22T02:04:44.2453887Z           ]
2026-06-22T02:04:44.2453984Z         }
2026-06-22T02:04:44.2454084Z       }
2026-06-22T02:04:44.2454183Z     },
2026-06-22T02:04:44.2454285Z     {
2026-06-22T02:04:44.2454436Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-22T02:04:44.2454604Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-22T02:04:44.2454718Z       "requiredStages": [
2026-06-22T02:04:44.2454827Z         "impl",
2026-06-22T02:04:44.2454936Z         "unit"
2026-06-22T02:04:44.2455040Z       ],
2026-06-22T02:04:44.2455153Z       "stages": {
2026-06-22T02:04:44.2455253Z         "doc": {
2026-06-22T02:04:44.2455374Z           "complete": false,
2026-06-22T02:04:44.2455487Z           "evidence": []
2026-06-22T02:04:44.2455592Z         },
2026-06-22T02:04:44.2455697Z         "impl": {
2026-06-22T02:04:44.2455816Z           "complete": true,
2026-06-22T02:04:44.2455927Z           "evidence": [
2026-06-22T02:04:44.2456031Z             {
2026-06-22T02:04:44.2456173Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2456279Z               "line": 116
2026-06-22T02:04:44.2456388Z             },
2026-06-22T02:04:44.2456488Z             {
2026-06-22T02:04:44.2456631Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2456741Z               "line": 211
2026-06-22T02:04:44.2456847Z             }
2026-06-22T02:04:44.2456951Z           ]
2026-06-22T02:04:44.2457051Z         },
2026-06-22T02:04:44.2457166Z         "int": {
2026-06-22T02:04:44.2457284Z           "complete": false,
2026-06-22T02:04:44.2457399Z           "evidence": []
2026-06-22T02:04:44.2457510Z         },
2026-06-22T02:04:44.2457613Z         "unit": {
2026-06-22T02:04:44.2457736Z           "complete": true,
2026-06-22T02:04:44.2457846Z           "evidence": [
2026-06-22T02:04:44.2457958Z             {
2026-06-22T02:04:44.2458091Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2458207Z               "line": 388
2026-06-22T02:04:44.2458420Z             },
2026-06-22T02:04:44.2458521Z             {
2026-06-22T02:04:44.2458668Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2458779Z               "line": 469
2026-06-22T02:04:44.2458884Z             }
2026-06-22T02:04:44.2459070Z           ]
2026-06-22T02:04:44.2459293Z         }
2026-06-22T02:04:44.2459418Z       }
2026-06-22T02:04:44.2459522Z     },
2026-06-22T02:04:44.2459627Z     {
2026-06-22T02:04:44.2459776Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-22T02:04:44.2460925Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-22T02:04:44.2461050Z       "requiredStages": [
2026-06-22T02:04:44.2461160Z         "impl",
2026-06-22T02:04:44.2461278Z         "unit"
2026-06-22T02:04:44.2461384Z       ],
2026-06-22T02:04:44.2461493Z       "stages": {
2026-06-22T02:04:44.2461597Z         "doc": {
2026-06-22T02:04:44.2461718Z           "complete": true,
2026-06-22T02:04:44.2461822Z           "evidence": [
2026-06-22T02:04:44.2461927Z             {
2026-06-22T02:04:44.2462075Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2462184Z               "line": 206
2026-06-22T02:04:44.2462295Z             }
2026-06-22T02:04:44.2462394Z           ]
2026-06-22T02:04:44.2462504Z         },
2026-06-22T02:04:44.2462615Z         "impl": {
2026-06-22T02:04:44.2462723Z           "complete": true,
2026-06-22T02:04:44.2462833Z           "evidence": [
2026-06-22T02:04:44.2462934Z             {
2026-06-22T02:04:44.2463085Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2463189Z               "line": 691
2026-06-22T02:04:44.2463294Z             },
2026-06-22T02:04:44.2463400Z             {
2026-06-22T02:04:44.2463537Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2463648Z               "line": 791
2026-06-22T02:04:44.2463748Z             },
2026-06-22T02:04:44.2463847Z             {
2026-06-22T02:04:44.2463972Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2464100Z               "line": 1120
2026-06-22T02:04:44.2464205Z             },
2026-06-22T02:04:44.2464301Z             {
2026-06-22T02:04:44.2464452Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.2464563Z               "line": 184
2026-06-22T02:04:44.2464667Z             }
2026-06-22T02:04:44.2464772Z           ]
2026-06-22T02:04:44.2464883Z         },
2026-06-22T02:04:44.2464982Z         "int": {
2026-06-22T02:04:44.2465087Z           "complete": false,
2026-06-22T02:04:44.2465203Z           "evidence": []
2026-06-22T02:04:44.2465306Z         },
2026-06-22T02:04:44.2465406Z         "unit": {
2026-06-22T02:04:44.2465525Z           "complete": true,
2026-06-22T02:04:44.2465647Z           "evidence": [
2026-06-22T02:04:44.2465751Z             {
2026-06-22T02:04:44.2465886Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2466004Z               "line": 1169
2026-06-22T02:04:44.2466109Z             },
2026-06-22T02:04:44.2466219Z             {
2026-06-22T02:04:44.2466380Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:04:44.2466496Z               "line": 44
2026-06-22T02:04:44.2466601Z             },
2026-06-22T02:04:44.2466705Z             {
2026-06-22T02:04:44.2466863Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T02:04:44.2466972Z               "line": 52
2026-06-22T02:04:44.2467072Z             },
2026-06-22T02:04:44.2467169Z             {
2026-06-22T02:04:44.2467301Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:04:44.2467412Z               "line": 57
2026-06-22T02:04:44.2467516Z             },
2026-06-22T02:04:44.2467620Z             {
2026-06-22T02:04:44.2467911Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T02:04:44.2468022Z               "line": 54
2026-06-22T02:04:44.2468123Z             }
2026-06-22T02:04:44.2468230Z           ]
2026-06-22T02:04:44.2468339Z         }
2026-06-22T02:04:44.2468440Z       }
2026-06-22T02:04:44.2468618Z     },
2026-06-22T02:04:44.2468724Z     {
2026-06-22T02:04:44.2468876Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-22T02:04:44.2469195Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-22T02:04:44.2469315Z       "requiredStages": [
2026-06-22T02:04:44.2469434Z         "impl",
2026-06-22T02:04:44.2469538Z         "unit"
2026-06-22T02:04:44.2469639Z       ],
2026-06-22T02:04:44.2469735Z       "stages": {
2026-06-22T02:04:44.2469844Z         "doc": {
2026-06-22T02:04:44.2469949Z           "complete": false,
2026-06-22T02:04:44.2470064Z           "evidence": []
2026-06-22T02:04:44.2470163Z         },
2026-06-22T02:04:44.2470269Z         "impl": {
2026-06-22T02:04:44.2470397Z           "complete": true,
2026-06-22T02:04:44.2470507Z           "evidence": [
2026-06-22T02:04:44.2470613Z             {
2026-06-22T02:04:44.2470759Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2470872Z               "line": 26
2026-06-22T02:04:44.2470983Z             },
2026-06-22T02:04:44.2471085Z             {
2026-06-22T02:04:44.2471233Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2471343Z               "line": 135
2026-06-22T02:04:44.2471452Z             },
2026-06-22T02:04:44.2471548Z             {
2026-06-22T02:04:44.2471705Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:04:44.2471810Z               "line": 26
2026-06-22T02:04:44.2471921Z             },
2026-06-22T02:04:44.2472030Z             {
2026-06-22T02:04:44.2472182Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:04:44.2472296Z               "line": 237
2026-06-22T02:04:44.2472392Z             }
2026-06-22T02:04:44.2472501Z           ]
2026-06-22T02:04:44.2472611Z         },
2026-06-22T02:04:44.2472716Z         "int": {
2026-06-22T02:04:44.2472826Z           "complete": false,
2026-06-22T02:04:44.2472936Z           "evidence": []
2026-06-22T02:04:44.2473030Z         },
2026-06-22T02:04:44.2473146Z         "unit": {
2026-06-22T02:04:44.2473255Z           "complete": true,
2026-06-22T02:04:44.2473364Z           "evidence": [
2026-06-22T02:04:44.2473470Z             {
2026-06-22T02:04:44.2473617Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2473721Z               "line": 161
2026-06-22T02:04:44.2473831Z             },
2026-06-22T02:04:44.2473927Z             {
2026-06-22T02:04:44.2474073Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2474174Z               "line": 170
2026-06-22T02:04:44.2474275Z             },
2026-06-22T02:04:44.2474373Z             {
2026-06-22T02:04:44.2474504Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2474618Z               "line": 179
2026-06-22T02:04:44.2474727Z             },
2026-06-22T02:04:44.2474833Z             {
2026-06-22T02:04:44.2474975Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2475075Z               "line": 190
2026-06-22T02:04:44.2475181Z             },
2026-06-22T02:04:44.2475285Z             {
2026-06-22T02:04:44.2475425Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2475538Z               "line": 199
2026-06-22T02:04:44.2475642Z             },
2026-06-22T02:04:44.2475749Z             {
2026-06-22T02:04:44.2475886Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2475999Z               "line": 216
2026-06-22T02:04:44.2476104Z             },
2026-06-22T02:04:44.2476217Z             {
2026-06-22T02:04:44.2476359Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:04:44.2476469Z               "line": 242
2026-06-22T02:04:44.2476573Z             },
2026-06-22T02:04:44.2476784Z             {
2026-06-22T02:04:44.2476931Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.2477080Z               "line": 295
2026-06-22T02:04:44.2477217Z             },
2026-06-22T02:04:44.2477380Z             {
2026-06-22T02:04:44.2477570Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2477870Z               "line": 244
2026-06-22T02:04:44.2477981Z             },
2026-06-22T02:04:44.2478081Z             {
2026-06-22T02:04:44.2478262Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:04:44.2478396Z               "line": 265
2026-06-22T02:04:44.2478529Z             },
2026-06-22T02:04:44.2478635Z             {
2026-06-22T02:04:44.2478790Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:04:44.2478894Z               "line": 293
2026-06-22T02:04:44.2479174Z             },
2026-06-22T02:04:44.2479284Z             {
2026-06-22T02:04:44.2479445Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:04:44.2479570Z               "line": 317
2026-06-22T02:04:44.2479675Z             },
2026-06-22T02:04:44.2479779Z             {
2026-06-22T02:04:44.2484262Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:04:44.2484424Z               "line": 327
2026-06-22T02:04:44.2484548Z             },
2026-06-22T02:04:44.2484658Z             {
2026-06-22T02:04:44.2484820Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.2484929Z               "line": 540
2026-06-22T02:04:44.2485040Z             }
2026-06-22T02:04:44.2485140Z           ]
2026-06-22T02:04:44.2485244Z         }
2026-06-22T02:04:44.2485345Z       }
2026-06-22T02:04:44.2485459Z     },
2026-06-22T02:04:44.2485568Z     {
2026-06-22T02:04:44.2485726Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-22T02:04:44.2490779Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-22T02:04:44.2490978Z       "requiredStages": [],
2026-06-22T02:04:44.2491094Z       "stages": {
2026-06-22T02:04:44.2491198Z         "doc": {
2026-06-22T02:04:44.2491326Z           "complete": false,
2026-06-22T02:04:44.2491437Z           "evidence": []
2026-06-22T02:04:44.2491546Z         },
2026-06-22T02:04:44.2491656Z         "impl": {
2026-06-22T02:04:44.2491771Z           "complete": false,
2026-06-22T02:04:44.2491888Z           "evidence": []
2026-06-22T02:04:44.2491988Z         },
2026-06-22T02:04:44.2492093Z         "int": {
2026-06-22T02:04:44.2492368Z           "complete": false,
2026-06-22T02:04:44.2492478Z           "evidence": []
2026-06-22T02:04:44.2492586Z         },
2026-06-22T02:04:44.2492697Z         "unit": {
2026-06-22T02:04:44.2492811Z           "complete": false,
2026-06-22T02:04:44.2492925Z           "evidence": []
2026-06-22T02:04:44.2493131Z         }
2026-06-22T02:04:44.2493235Z       }
2026-06-22T02:04:44.2493341Z     },
2026-06-22T02:04:44.2493450Z     {
2026-06-22T02:04:44.2493588Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-22T02:04:44.2495232Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-22T02:04:44.2495376Z       "requiredStages": [
2026-06-22T02:04:44.2495480Z         "impl",
2026-06-22T02:04:44.2495586Z         "unit",
2026-06-22T02:04:44.2495690Z         "int"
2026-06-22T02:04:44.2495795Z       ],
2026-06-22T02:04:44.2495905Z       "stages": {
2026-06-22T02:04:44.2496015Z         "doc": {
2026-06-22T02:04:44.2496128Z           "complete": false,
2026-06-22T02:04:44.2496244Z           "evidence": []
2026-06-22T02:04:44.2496348Z         },
2026-06-22T02:04:44.2496453Z         "impl": {
2026-06-22T02:04:44.2496573Z           "complete": true,
2026-06-22T02:04:44.2496686Z           "evidence": [
2026-06-22T02:04:44.2496791Z             {
2026-06-22T02:04:44.2496949Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2497071Z               "line": 538
2026-06-22T02:04:44.2497181Z             },
2026-06-22T02:04:44.2497281Z             {
2026-06-22T02:04:44.2497426Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2497546Z               "line": 641
2026-06-22T02:04:44.2497651Z             },
2026-06-22T02:04:44.2497751Z             {
2026-06-22T02:04:44.2497928Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:04:44.2498089Z               "line": 21
2026-06-22T02:04:44.2498195Z             }
2026-06-22T02:04:44.2498304Z           ]
2026-06-22T02:04:44.2498409Z         },
2026-06-22T02:04:44.2498515Z         "int": {
2026-06-22T02:04:44.2498629Z           "complete": true,
2026-06-22T02:04:44.2498738Z           "evidence": [
2026-06-22T02:04:44.2498849Z             {
2026-06-22T02:04:44.2499107Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:04:44.2499220Z               "line": 236
2026-06-22T02:04:44.2499339Z             },
2026-06-22T02:04:44.2499441Z             {
2026-06-22T02:04:44.2499611Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:04:44.2499726Z               "line": 396
2026-06-22T02:04:44.2499831Z             },
2026-06-22T02:04:44.2499934Z             {
2026-06-22T02:04:44.2500110Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.2500213Z               "line": 1534
2026-06-22T02:04:44.2500322Z             },
2026-06-22T02:04:44.2500438Z             {
2026-06-22T02:04:44.2500608Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.2500724Z               "line": 1712
2026-06-22T02:04:44.2500819Z             }
2026-06-22T02:04:44.2500928Z           ]
2026-06-22T02:04:44.2501029Z         },
2026-06-22T02:04:44.2501143Z         "unit": {
2026-06-22T02:04:44.2501257Z           "complete": true,
2026-06-22T02:04:44.2501353Z           "evidence": [
2026-06-22T02:04:44.2501467Z             {
2026-06-22T02:04:44.2501615Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2501725Z               "line": 887
2026-06-22T02:04:44.2501829Z             }
2026-06-22T02:04:44.2502040Z           ]
2026-06-22T02:04:44.2502148Z         }
2026-06-22T02:04:44.2502254Z       }
2026-06-22T02:04:44.2502355Z     },
2026-06-22T02:04:44.2502454Z     {
2026-06-22T02:04:44.2502606Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-22T02:04:44.2502775Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-22T02:04:44.2503023Z       "requiredStages": [
2026-06-22T02:04:44.2503123Z         "impl",
2026-06-22T02:04:44.2503228Z         "unit"
2026-06-22T02:04:44.2503329Z       ],
2026-06-22T02:04:44.2503433Z       "stages": {
2026-06-22T02:04:44.2503547Z         "doc": {
2026-06-22T02:04:44.2503653Z           "complete": false,
2026-06-22T02:04:44.2503776Z           "evidence": []
2026-06-22T02:04:44.2503887Z         },
2026-06-22T02:04:44.2503991Z         "impl": {
2026-06-22T02:04:44.2504109Z           "complete": true,
2026-06-22T02:04:44.2504211Z           "evidence": [
2026-06-22T02:04:44.2504320Z             {
2026-06-22T02:04:44.2504468Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.2504579Z               "line": 25
2026-06-22T02:04:44.2504691Z             },
2026-06-22T02:04:44.2504792Z             {
2026-06-22T02:04:44.2504936Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.2505045Z               "line": 26
2026-06-22T02:04:44.2505156Z             },
2026-06-22T02:04:44.2505260Z             {
2026-06-22T02:04:44.2505406Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.2505511Z               "line": 159
2026-06-22T02:04:44.2505612Z             }
2026-06-22T02:04:44.2505721Z           ]
2026-06-22T02:04:44.2505826Z         },
2026-06-22T02:04:44.2505926Z         "int": {
2026-06-22T02:04:44.2506030Z           "complete": false,
2026-06-22T02:04:44.2506151Z           "evidence": []
2026-06-22T02:04:44.2506255Z         },
2026-06-22T02:04:44.2506364Z         "unit": {
2026-06-22T02:04:44.2506485Z           "complete": true,
2026-06-22T02:04:44.2506593Z           "evidence": [
2026-06-22T02:04:44.2506703Z             {
2026-06-22T02:04:44.2506838Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.2506956Z               "line": 188
2026-06-22T02:04:44.2507061Z             },
2026-06-22T02:04:44.2507148Z             {
2026-06-22T02:04:44.2507289Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.2507400Z               "line": 240
2026-06-22T02:04:44.2507514Z             },
2026-06-22T02:04:44.2507613Z             {
2026-06-22T02:04:44.2507766Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.2507878Z               "line": 186
2026-06-22T02:04:44.2507982Z             }
2026-06-22T02:04:44.2508088Z           ]
2026-06-22T02:04:44.2508188Z         }
2026-06-22T02:04:44.2508297Z       }
2026-06-22T02:04:44.2508402Z     },
2026-06-22T02:04:44.2508507Z     {
2026-06-22T02:04:44.2508640Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-22T02:04:44.2508836Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-22T02:04:44.2509033Z       "requiredStages": [
2026-06-22T02:04:44.2509142Z         "impl",
2026-06-22T02:04:44.2509246Z         "unit"
2026-06-22T02:04:44.2509347Z       ],
2026-06-22T02:04:44.2509480Z       "stages": {
2026-06-22T02:04:44.2509589Z         "doc": {
2026-06-22T02:04:44.2509733Z           "complete": false,
2026-06-22T02:04:44.2509847Z           "evidence": []
2026-06-22T02:04:44.2509943Z         },
2026-06-22T02:04:44.2510057Z         "impl": {
2026-06-22T02:04:44.2510166Z           "complete": true,
2026-06-22T02:04:44.2510281Z           "evidence": [
2026-06-22T02:04:44.2510391Z             {
2026-06-22T02:04:44.2510541Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2510656Z               "line": 48
2026-06-22T02:04:44.2510759Z             },
2026-06-22T02:04:44.2510868Z             {
2026-06-22T02:04:44.2511013Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2511117Z               "line": 55
2026-06-22T02:04:44.2511322Z             },
2026-06-22T02:04:44.2511427Z             {
2026-06-22T02:04:44.2511570Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2511680Z               "line": 74
2026-06-22T02:04:44.2511794Z             },
2026-06-22T02:04:44.2511894Z             {
2026-06-22T02:04:44.2512132Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2512247Z               "line": 91
2026-06-22T02:04:44.2512352Z             }
2026-06-22T02:04:44.2512456Z           ]
2026-06-22T02:04:44.2512558Z         },
2026-06-22T02:04:44.2512662Z         "int": {
2026-06-22T02:04:44.2512776Z           "complete": false,
2026-06-22T02:04:44.2512896Z           "evidence": []
2026-06-22T02:04:44.2513014Z         },
2026-06-22T02:04:44.2513118Z         "unit": {
2026-06-22T02:04:44.2513237Z           "complete": true,
2026-06-22T02:04:44.2513340Z           "evidence": [
2026-06-22T02:04:44.2513445Z             {
2026-06-22T02:04:44.2513584Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2513711Z               "line": 149
2026-06-22T02:04:44.2513822Z             },
2026-06-22T02:04:44.2513922Z             {
2026-06-22T02:04:44.2514064Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2514175Z               "line": 166
2026-06-22T02:04:44.2514285Z             },
2026-06-22T02:04:44.2514388Z             {
2026-06-22T02:04:44.2514533Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2514647Z               "line": 176
2026-06-22T02:04:44.2514751Z             },
2026-06-22T02:04:44.2514848Z             {
2026-06-22T02:04:44.2514989Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2515110Z               "line": 194
2026-06-22T02:04:44.2515209Z             },
2026-06-22T02:04:44.2515318Z             {
2026-06-22T02:04:44.2515463Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2515566Z               "line": 207
2026-06-22T02:04:44.2515677Z             }
2026-06-22T02:04:44.2515783Z           ]
2026-06-22T02:04:44.2515890Z         }
2026-06-22T02:04:44.2515995Z       }
2026-06-22T02:04:44.2516090Z     },
2026-06-22T02:04:44.2516201Z     {
2026-06-22T02:04:44.2516342Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-22T02:04:44.2516567Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-22T02:04:44.2516687Z       "requiredStages": [
2026-06-22T02:04:44.2516801Z         "impl",
2026-06-22T02:04:44.2516910Z         "unit"
2026-06-22T02:04:44.2517016Z       ],
2026-06-22T02:04:44.2517111Z       "stages": {
2026-06-22T02:04:44.2517210Z         "doc": {
2026-06-22T02:04:44.2517331Z           "complete": false,
2026-06-22T02:04:44.2517435Z           "evidence": []
2026-06-22T02:04:44.2517549Z         },
2026-06-22T02:04:44.2517646Z         "impl": {
2026-06-22T02:04:44.2517811Z           "complete": true,
2026-06-22T02:04:44.2517926Z           "evidence": [
2026-06-22T02:04:44.2518028Z             {
2026-06-22T02:04:44.2518192Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2518297Z               "line": 466
2026-06-22T02:04:44.2518410Z             },
2026-06-22T02:04:44.2518509Z             {
2026-06-22T02:04:44.2518653Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2518771Z               "line": 26
2026-06-22T02:04:44.2518866Z             }
2026-06-22T02:04:44.2519034Z           ]
2026-06-22T02:04:44.2519129Z         },
2026-06-22T02:04:44.2519244Z         "int": {
2026-06-22T02:04:44.2519358Z           "complete": false,
2026-06-22T02:04:44.2519472Z           "evidence": []
2026-06-22T02:04:44.2519578Z         },
2026-06-22T02:04:44.2519687Z         "unit": {
2026-06-22T02:04:44.2519811Z           "complete": true,
2026-06-22T02:04:44.2519912Z           "evidence": [
2026-06-22T02:04:44.2520016Z             {
2026-06-22T02:04:44.2520163Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2520270Z               "line": 150
2026-06-22T02:04:44.2520478Z             },
2026-06-22T02:04:44.2520575Z             {
2026-06-22T02:04:44.2520721Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2520828Z               "line": 208
2026-06-22T02:04:44.2520932Z             }
2026-06-22T02:04:44.2521036Z           ]
2026-06-22T02:04:44.2521235Z         }
2026-06-22T02:04:44.2521343Z       }
2026-06-22T02:04:44.2521438Z     },
2026-06-22T02:04:44.2521548Z     {
2026-06-22T02:04:44.2521700Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-22T02:04:44.2530928Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T02:04:44.2531173Z       "requiredStages": [
2026-06-22T02:04:44.2531272Z         "impl",
2026-06-22T02:04:44.2531373Z         "unit",
2026-06-22T02:04:44.2531479Z         "int"
2026-06-22T02:04:44.2531586Z       ],
2026-06-22T02:04:44.2531695Z       "stages": {
2026-06-22T02:04:44.2531801Z         "doc": {
2026-06-22T02:04:44.2531922Z           "complete": false,
2026-06-22T02:04:44.2532147Z           "evidence": []
2026-06-22T02:04:44.2532256Z         },
2026-06-22T02:04:44.2532356Z         "impl": {
2026-06-22T02:04:44.2532471Z           "complete": true,
2026-06-22T02:04:44.2532585Z           "evidence": [
2026-06-22T02:04:44.2532690Z             {
2026-06-22T02:04:44.2532852Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2533067Z               "line": 99
2026-06-22T02:04:44.2533176Z             },
2026-06-22T02:04:44.2533281Z             {
2026-06-22T02:04:44.2533434Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2533538Z               "line": 201
2026-06-22T02:04:44.2533639Z             }
2026-06-22T02:04:44.2533749Z           ]
2026-06-22T02:04:44.2533848Z         },
2026-06-22T02:04:44.2533959Z         "int": {
2026-06-22T02:04:44.2534073Z           "complete": true,
2026-06-22T02:04:44.2534186Z           "evidence": [
2026-06-22T02:04:44.2534295Z             {
2026-06-22T02:04:44.2534470Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.2534584Z               "line": 770
2026-06-22T02:04:44.2534690Z             }
2026-06-22T02:04:44.2534794Z           ]
2026-06-22T02:04:44.2534894Z         },
2026-06-22T02:04:44.2534995Z         "unit": {
2026-06-22T02:04:44.2535104Z           "complete": true,
2026-06-22T02:04:44.2535223Z           "evidence": [
2026-06-22T02:04:44.2535328Z             {
2026-06-22T02:04:44.2535476Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2535592Z               "line": 517
2026-06-22T02:04:44.2535695Z             },
2026-06-22T02:04:44.2535800Z             {
2026-06-22T02:04:44.2535944Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2536053Z               "line": 576
2026-06-22T02:04:44.2536162Z             }
2026-06-22T02:04:44.2536268Z           ]
2026-06-22T02:04:44.2536372Z         }
2026-06-22T02:04:44.2536477Z       }
2026-06-22T02:04:44.2536583Z     },
2026-06-22T02:04:44.2536692Z     {
2026-06-22T02:04:44.2536846Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-22T02:04:44.2538198Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-22T02:04:44.2538331Z       "requiredStages": [
2026-06-22T02:04:44.2538441Z         "doc",
2026-06-22T02:04:44.2538551Z         "impl",
2026-06-22T02:04:44.2538651Z         "unit"
2026-06-22T02:04:44.2538761Z       ],
2026-06-22T02:04:44.2538866Z       "stages": {
2026-06-22T02:04:44.2539037Z         "doc": {
2026-06-22T02:04:44.2539167Z           "complete": true,
2026-06-22T02:04:44.2539293Z           "evidence": [
2026-06-22T02:04:44.2539398Z             {
2026-06-22T02:04:44.2539536Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2539644Z               "line": 214
2026-06-22T02:04:44.2539744Z             }
2026-06-22T02:04:44.2539850Z           ]
2026-06-22T02:04:44.2539958Z         },
2026-06-22T02:04:44.2540068Z         "impl": {
2026-06-22T02:04:44.2540188Z           "complete": true,
2026-06-22T02:04:44.2540306Z           "evidence": [
2026-06-22T02:04:44.2540412Z             {
2026-06-22T02:04:44.2540555Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2540664Z               "line": 56
2026-06-22T02:04:44.2540770Z             },
2026-06-22T02:04:44.2540874Z             {
2026-06-22T02:04:44.2541022Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2541131Z               "line": 580
2026-06-22T02:04:44.2541241Z             },
2026-06-22T02:04:44.2541342Z             {
2026-06-22T02:04:44.2541493Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2541613Z               "line": 36
2026-06-22T02:04:44.2541827Z             },
2026-06-22T02:04:44.2541933Z             {
2026-06-22T02:04:44.2542076Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2542189Z               "line": 59
2026-06-22T02:04:44.2542285Z             },
2026-06-22T02:04:44.2542389Z             {
2026-06-22T02:04:44.2542659Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2542764Z               "line": 83
2026-06-22T02:04:44.2542873Z             },
2026-06-22T02:04:44.2542975Z             {
2026-06-22T02:04:44.2543130Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2543231Z               "line": 140
2026-06-22T02:04:44.2543341Z             },
2026-06-22T02:04:44.2543445Z             {
2026-06-22T02:04:44.2543589Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2543703Z               "line": 159
2026-06-22T02:04:44.2543803Z             },
2026-06-22T02:04:44.2543909Z             {
2026-06-22T02:04:44.2544065Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2544175Z               "line": 384
2026-06-22T02:04:44.2544281Z             },
2026-06-22T02:04:44.2544384Z             {
2026-06-22T02:04:44.2544529Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2544633Z               "line": 535
2026-06-22T02:04:44.2544737Z             },
2026-06-22T02:04:44.2544837Z             {
2026-06-22T02:04:44.2544983Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2545096Z               "line": 581
2026-06-22T02:04:44.2545197Z             },
2026-06-22T02:04:44.2545298Z             {
2026-06-22T02:04:44.2545430Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2545545Z               "line": 300
2026-06-22T02:04:44.2545646Z             },
2026-06-22T02:04:44.2545749Z             {
2026-06-22T02:04:44.2545879Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:04:44.2545984Z               "line": 42
2026-06-22T02:04:44.2546098Z             }
2026-06-22T02:04:44.2546199Z           ]
2026-06-22T02:04:44.2546298Z         },
2026-06-22T02:04:44.2546403Z         "int": {
2026-06-22T02:04:44.2546523Z           "complete": false,
2026-06-22T02:04:44.2546637Z           "evidence": []
2026-06-22T02:04:44.2546742Z         },
2026-06-22T02:04:44.2546852Z         "unit": {
2026-06-22T02:04:44.2546966Z           "complete": true,
2026-06-22T02:04:44.2547076Z           "evidence": [
2026-06-22T02:04:44.2547181Z             {
2026-06-22T02:04:44.2547338Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2547449Z               "line": 813
2026-06-22T02:04:44.2547547Z             },
2026-06-22T02:04:44.2547651Z             {
2026-06-22T02:04:44.2547800Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2547900Z               "line": 854
2026-06-22T02:04:44.2548009Z             },
2026-06-22T02:04:44.2548110Z             {
2026-06-22T02:04:44.2548252Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.2548362Z               "line": 928
2026-06-22T02:04:44.2548472Z             }
2026-06-22T02:04:44.2548567Z           ]
2026-06-22T02:04:44.2548672Z         }
2026-06-22T02:04:44.2548777Z       }
2026-06-22T02:04:44.2548873Z     },
2026-06-22T02:04:44.2549049Z     {
2026-06-22T02:04:44.2549197Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-22T02:04:44.2554169Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-22T02:04:44.2554550Z       "requiredStages": [
2026-06-22T02:04:44.2554663Z         "impl",
2026-06-22T02:04:44.2554765Z         "unit",
2026-06-22T02:04:44.2554869Z         "int"
2026-06-22T02:04:44.2554978Z       ],
2026-06-22T02:04:44.2555080Z       "stages": {
2026-06-22T02:04:44.2555189Z         "doc": {
2026-06-22T02:04:44.2555292Z           "complete": false,
2026-06-22T02:04:44.2555416Z           "evidence": []
2026-06-22T02:04:44.2555515Z         },
2026-06-22T02:04:44.2555624Z         "impl": {
2026-06-22T02:04:44.2555733Z           "complete": true,
2026-06-22T02:04:44.2555853Z           "evidence": [
2026-06-22T02:04:44.2555957Z             {
2026-06-22T02:04:44.2556110Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.2556215Z               "line": 204
2026-06-22T02:04:44.2556319Z             }
2026-06-22T02:04:44.2556435Z           ]
2026-06-22T02:04:44.2556539Z         },
2026-06-22T02:04:44.2556643Z         "int": {
2026-06-22T02:04:44.2556764Z           "complete": true,
2026-06-22T02:04:44.2556873Z           "evidence": [
2026-06-22T02:04:44.2556982Z             {
2026-06-22T02:04:44.2557140Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T02:04:44.2557259Z               "line": 296
2026-06-22T02:04:44.2557360Z             }
2026-06-22T02:04:44.2557459Z           ]
2026-06-22T02:04:44.2557564Z         },
2026-06-22T02:04:44.2557665Z         "unit": {
2026-06-22T02:04:44.2557778Z           "complete": true,
2026-06-22T02:04:44.2557889Z           "evidence": [
2026-06-22T02:04:44.2557990Z             {
2026-06-22T02:04:44.2558145Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.2558249Z               "line": 467
2026-06-22T02:04:44.2558355Z             }
2026-06-22T02:04:44.2558455Z           ]
2026-06-22T02:04:44.2558564Z         }
2026-06-22T02:04:44.2558656Z       }
2026-06-22T02:04:44.2558765Z     },
2026-06-22T02:04:44.2558864Z     {
2026-06-22T02:04:44.2559061Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-22T02:04:44.2562448Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-22T02:04:44.2562792Z       "requiredStages": [
2026-06-22T02:04:44.2562896Z         "impl",
2026-06-22T02:04:44.2563005Z         "unit",
2026-06-22T02:04:44.2563102Z         "int"
2026-06-22T02:04:44.2563206Z       ],
2026-06-22T02:04:44.2563309Z       "stages": {
2026-06-22T02:04:44.2563414Z         "doc": {
2026-06-22T02:04:44.2563532Z           "complete": false,
2026-06-22T02:04:44.2563635Z           "evidence": []
2026-06-22T02:04:44.2563741Z         },
2026-06-22T02:04:44.2563846Z         "impl": {
2026-06-22T02:04:44.2563964Z           "complete": true,
2026-06-22T02:04:44.2564075Z           "evidence": [
2026-06-22T02:04:44.2564170Z             {
2026-06-22T02:04:44.2564336Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.2564443Z               "line": 123
2026-06-22T02:04:44.2564552Z             },
2026-06-22T02:04:44.2564651Z             {
2026-06-22T02:04:44.2564795Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:04:44.2564909Z               "line": 134
2026-06-22T02:04:44.2565010Z             }
2026-06-22T02:04:44.2565110Z           ]
2026-06-22T02:04:44.2565214Z         },
2026-06-22T02:04:44.2565320Z         "int": {
2026-06-22T02:04:44.2565430Z           "complete": true,
2026-06-22T02:04:44.2565543Z           "evidence": [
2026-06-22T02:04:44.2565645Z             {
2026-06-22T02:04:44.2565796Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.2565900Z               "line": 312
2026-06-22T02:04:44.2566005Z             },
2026-06-22T02:04:44.2566108Z             {
2026-06-22T02:04:44.2566254Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.2566365Z               "line": 525
2026-06-22T02:04:44.2566484Z             }
2026-06-22T02:04:44.2566589Z           ]
2026-06-22T02:04:44.2566694Z         },
2026-06-22T02:04:44.2566808Z         "unit": {
2026-06-22T02:04:44.2566923Z           "complete": true,
2026-06-22T02:04:44.2567037Z           "evidence": [
2026-06-22T02:04:44.2567156Z             {
2026-06-22T02:04:44.2567315Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.2567419Z               "line": 250
2026-06-22T02:04:44.2567528Z             }
2026-06-22T02:04:44.2567625Z           ]
2026-06-22T02:04:44.2567729Z         }
2026-06-22T02:04:44.2567829Z       }
2026-06-22T02:04:44.2567930Z     },
2026-06-22T02:04:44.2568024Z     {
2026-06-22T02:04:44.2568167Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-22T02:04:44.2569997Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-22T02:04:44.2570131Z       "requiredStages": [
2026-06-22T02:04:44.2570236Z         "impl",
2026-06-22T02:04:44.2570345Z         "unit"
2026-06-22T02:04:44.2570446Z       ],
2026-06-22T02:04:44.2570551Z       "stages": {
2026-06-22T02:04:44.2570655Z         "doc": {
2026-06-22T02:04:44.2570765Z           "complete": false,
2026-06-22T02:04:44.2570875Z           "evidence": []
2026-06-22T02:04:44.2570978Z         },
2026-06-22T02:04:44.2571078Z         "impl": {
2026-06-22T02:04:44.2571188Z           "complete": true,
2026-06-22T02:04:44.2571300Z           "evidence": [
2026-06-22T02:04:44.2571405Z             {
2026-06-22T02:04:44.2571657Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2571759Z               "line": 31
2026-06-22T02:04:44.2571849Z             }
2026-06-22T02:04:44.2571949Z           ]
2026-06-22T02:04:44.2572049Z         },
2026-06-22T02:04:44.2572150Z         "int": {
2026-06-22T02:04:44.2572359Z           "complete": false,
2026-06-22T02:04:44.2572474Z           "evidence": []
2026-06-22T02:04:44.2572569Z         },
2026-06-22T02:04:44.2572669Z         "unit": {
2026-06-22T02:04:44.2572788Z           "complete": true,
2026-06-22T02:04:44.2572898Z           "evidence": [
2026-06-22T02:04:44.2573008Z             {
2026-06-22T02:04:44.2573151Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2573255Z               "line": 181
2026-06-22T02:04:44.2573362Z             }
2026-06-22T02:04:44.2573460Z           ]
2026-06-22T02:04:44.2573565Z         }
2026-06-22T02:04:44.2573657Z       }
2026-06-22T02:04:44.2573761Z     },
2026-06-22T02:04:44.2573860Z     {
2026-06-22T02:04:44.2574012Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-22T02:04:44.2574191Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-22T02:04:44.2574301Z       "requiredStages": [
2026-06-22T02:04:44.2574406Z         "impl",
2026-06-22T02:04:44.2574515Z         "unit"
2026-06-22T02:04:44.2574631Z       ],
2026-06-22T02:04:44.2574740Z       "stages": {
2026-06-22T02:04:44.2574844Z         "doc": {
2026-06-22T02:04:44.2574960Z           "complete": false,
2026-06-22T02:04:44.2575069Z           "evidence": []
2026-06-22T02:04:44.2575173Z         },
2026-06-22T02:04:44.2575279Z         "impl": {
2026-06-22T02:04:44.2575402Z           "complete": true,
2026-06-22T02:04:44.2575507Z           "evidence": [
2026-06-22T02:04:44.2575608Z             {
2026-06-22T02:04:44.2575760Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2575865Z               "line": 49
2026-06-22T02:04:44.2575976Z             },
2026-06-22T02:04:44.2576084Z             {
2026-06-22T02:04:44.2576233Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2576351Z               "line": 81
2026-06-22T02:04:44.2576455Z             }
2026-06-22T02:04:44.2576560Z           ]
2026-06-22T02:04:44.2576659Z         },
2026-06-22T02:04:44.2576772Z         "int": {
2026-06-22T02:04:44.2576892Z           "complete": false,
2026-06-22T02:04:44.2577007Z           "evidence": []
2026-06-22T02:04:44.2577106Z         },
2026-06-22T02:04:44.2577202Z         "unit": {
2026-06-22T02:04:44.2577322Z           "complete": true,
2026-06-22T02:04:44.2577420Z           "evidence": [
2026-06-22T02:04:44.2577527Z             {
2026-06-22T02:04:44.2577664Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2577773Z               "line": 156
2026-06-22T02:04:44.2577880Z             },
2026-06-22T02:04:44.2577989Z             {
2026-06-22T02:04:44.2578137Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2578241Z               "line": 173
2026-06-22T02:04:44.2578355Z             },
2026-06-22T02:04:44.2578456Z             {
2026-06-22T02:04:44.2578603Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2578699Z               "line": 196
2026-06-22T02:04:44.2578805Z             }
2026-06-22T02:04:44.2578913Z           ]
2026-06-22T02:04:44.2579105Z         }
2026-06-22T02:04:44.2579214Z       }
2026-06-22T02:04:44.2579323Z     },
2026-06-22T02:04:44.2579432Z     {
2026-06-22T02:04:44.2579575Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-22T02:04:44.2579790Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-22T02:04:44.2579913Z       "requiredStages": [
2026-06-22T02:04:44.2580013Z         "impl",
2026-06-22T02:04:44.2580119Z         "unit"
2026-06-22T02:04:44.2580210Z       ],
2026-06-22T02:04:44.2580314Z       "stages": {
2026-06-22T02:04:44.2580420Z         "doc": {
2026-06-22T02:04:44.2580538Z           "complete": false,
2026-06-22T02:04:44.2580772Z           "evidence": []
2026-06-22T02:04:44.2580877Z         },
2026-06-22T02:04:44.2580977Z         "impl": {
2026-06-22T02:04:44.2581083Z           "complete": true,
2026-06-22T02:04:44.2581191Z           "evidence": [
2026-06-22T02:04:44.2581296Z             {
2026-06-22T02:04:44.2581449Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2581662Z               "line": 120
2026-06-22T02:04:44.2581762Z             }
2026-06-22T02:04:44.2581870Z           ]
2026-06-22T02:04:44.2581960Z         },
2026-06-22T02:04:44.2582066Z         "int": {
2026-06-22T02:04:44.2582175Z           "complete": false,
2026-06-22T02:04:44.2582285Z           "evidence": []
2026-06-22T02:04:44.2582391Z         },
2026-06-22T02:04:44.2582494Z         "unit": {
2026-06-22T02:04:44.2582609Z           "complete": true,
2026-06-22T02:04:44.2582714Z           "evidence": [
2026-06-22T02:04:44.2582819Z             {
2026-06-22T02:04:44.2582963Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2583081Z               "line": 212
2026-06-22T02:04:44.2583181Z             },
2026-06-22T02:04:44.2583278Z             {
2026-06-22T02:04:44.2583425Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2583529Z               "line": 221
2026-06-22T02:04:44.2583635Z             },
2026-06-22T02:04:44.2583734Z             {
2026-06-22T02:04:44.2583883Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2583997Z               "line": 229
2026-06-22T02:04:44.2584097Z             },
2026-06-22T02:04:44.2584202Z             {
2026-06-22T02:04:44.2584345Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2584458Z               "line": 239
2026-06-22T02:04:44.2584563Z             },
2026-06-22T02:04:44.2584666Z             {
2026-06-22T02:04:44.2584813Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:04:44.2584919Z               "line": 249
2026-06-22T02:04:44.2585028Z             }
2026-06-22T02:04:44.2585133Z           ]
2026-06-22T02:04:44.2585239Z         }
2026-06-22T02:04:44.2585338Z       }
2026-06-22T02:04:44.2585452Z     },
2026-06-22T02:04:44.2585553Z     {
2026-06-22T02:04:44.2585691Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-22T02:04:44.2585882Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-22T02:04:44.2586001Z       "requiredStages": [
2026-06-22T02:04:44.2586101Z         "impl",
2026-06-22T02:04:44.2586206Z         "unit"
2026-06-22T02:04:44.2586310Z       ],
2026-06-22T02:04:44.2586425Z       "stages": {
2026-06-22T02:04:44.2586521Z         "doc": {
2026-06-22T02:04:44.2586639Z           "complete": false,
2026-06-22T02:04:44.2586750Z           "evidence": []
2026-06-22T02:04:44.2586855Z         },
2026-06-22T02:04:44.2587285Z         "impl": {
2026-06-22T02:04:44.2587456Z           "complete": true,
2026-06-22T02:04:44.2592094Z           "evidence": [
2026-06-22T02:04:44.2592222Z             {
2026-06-22T02:04:44.2592382Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.2592516Z               "line": 14
2026-06-22T02:04:44.2592626Z             },
2026-06-22T02:04:44.2592716Z             {
2026-06-22T02:04:44.2592869Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.2592974Z               "line": 63
2026-06-22T02:04:44.2593083Z             }
2026-06-22T02:04:44.2593184Z           ]
2026-06-22T02:04:44.2593274Z         },
2026-06-22T02:04:44.2593379Z         "int": {
2026-06-22T02:04:44.2593484Z           "complete": false,
2026-06-22T02:04:44.2593603Z           "evidence": []
2026-06-22T02:04:44.2593708Z         },
2026-06-22T02:04:44.2593813Z         "unit": {
2026-06-22T02:04:44.2593932Z           "complete": true,
2026-06-22T02:04:44.2594042Z           "evidence": [
2026-06-22T02:04:44.2594153Z             {
2026-06-22T02:04:44.2594289Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.2594399Z               "line": 164
2026-06-22T02:04:44.2594506Z             },
2026-06-22T02:04:44.2594763Z             {
2026-06-22T02:04:44.2594909Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.2595013Z               "line": 198
2026-06-22T02:04:44.2595119Z             },
2026-06-22T02:04:44.2595212Z             {
2026-06-22T02:04:44.2595344Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.2595569Z               "line": 220
2026-06-22T02:04:44.2595673Z             }
2026-06-22T02:04:44.2595779Z           ]
2026-06-22T02:04:44.2595880Z         }
2026-06-22T02:04:44.2595979Z       }
2026-06-22T02:04:44.2596080Z     },
2026-06-22T02:04:44.2596185Z     {
2026-06-22T02:04:44.2596327Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-22T02:04:44.2597793Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-22T02:04:44.2597930Z       "requiredStages": [],
2026-06-22T02:04:44.2598046Z       "stages": {
2026-06-22T02:04:44.2598155Z         "doc": {
2026-06-22T02:04:44.2598283Z           "complete": true,
2026-06-22T02:04:44.2598394Z           "evidence": [
2026-06-22T02:04:44.2598498Z             {
2026-06-22T02:04:44.2598637Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2598751Z               "line": 165
2026-06-22T02:04:44.2598860Z             }
2026-06-22T02:04:44.2599033Z           ]
2026-06-22T02:04:44.2599480Z         },
2026-06-22T02:04:44.2599672Z         "impl": {
2026-06-22T02:04:44.2599804Z           "complete": false,
2026-06-22T02:04:44.2599925Z           "evidence": []
2026-06-22T02:04:44.2600033Z         },
2026-06-22T02:04:44.2600143Z         "int": {
2026-06-22T02:04:44.2600259Z           "complete": false,
2026-06-22T02:04:44.2600400Z           "evidence": []
2026-06-22T02:04:44.2600499Z         },
2026-06-22T02:04:44.2600610Z         "unit": {
2026-06-22T02:04:44.2600728Z           "complete": false,
2026-06-22T02:04:44.2600843Z           "evidence": []
2026-06-22T02:04:44.2600953Z         }
2026-06-22T02:04:44.2601053Z       }
2026-06-22T02:04:44.2601168Z     },
2026-06-22T02:04:44.2601268Z     {
2026-06-22T02:04:44.2601420Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-22T02:04:44.2601683Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-22T02:04:44.2601807Z       "requiredStages": [
2026-06-22T02:04:44.2601921Z         "impl",
2026-06-22T02:04:44.2602021Z         "unit"
2026-06-22T02:04:44.2602127Z       ],
2026-06-22T02:04:44.2602231Z       "stages": {
2026-06-22T02:04:44.2602345Z         "doc": {
2026-06-22T02:04:44.2602461Z           "complete": false,
2026-06-22T02:04:44.2602579Z           "evidence": []
2026-06-22T02:04:44.2602688Z         },
2026-06-22T02:04:44.2602787Z         "impl": {
2026-06-22T02:04:44.2602901Z           "complete": true,
2026-06-22T02:04:44.2603000Z           "evidence": [
2026-06-22T02:04:44.2603109Z             {
2026-06-22T02:04:44.2603248Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2603371Z               "line": 76
2026-06-22T02:04:44.2603473Z             },
2026-06-22T02:04:44.2603577Z             {
2026-06-22T02:04:44.2603725Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2603839Z               "line": 167
2026-06-22T02:04:44.2603943Z             },
2026-06-22T02:04:44.2604040Z             {
2026-06-22T02:04:44.2604192Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2604296Z               "line": 233
2026-06-22T02:04:44.2604393Z             },
2026-06-22T02:04:44.2604497Z             {
2026-06-22T02:04:44.2604635Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2604746Z               "line": 272
2026-06-22T02:04:44.2605103Z             }
2026-06-22T02:04:44.2605212Z           ]
2026-06-22T02:04:44.2605323Z         },
2026-06-22T02:04:44.2605427Z         "int": {
2026-06-22T02:04:44.2605545Z           "complete": false,
2026-06-22T02:04:44.2605654Z           "evidence": []
2026-06-22T02:04:44.2605759Z         },
2026-06-22T02:04:44.2605972Z         "unit": {
2026-06-22T02:04:44.2606097Z           "complete": true,
2026-06-22T02:04:44.2606210Z           "evidence": [
2026-06-22T02:04:44.2606311Z             {
2026-06-22T02:04:44.2606463Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2606562Z               "line": 321
2026-06-22T02:04:44.2606669Z             },
2026-06-22T02:04:44.2606769Z             {
2026-06-22T02:04:44.2606921Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2607035Z               "line": 329
2026-06-22T02:04:44.2607135Z             },
2026-06-22T02:04:44.2607241Z             {
2026-06-22T02:04:44.2607378Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2607502Z               "line": 356
2026-06-22T02:04:44.2607604Z             },
2026-06-22T02:04:44.2607717Z             {
2026-06-22T02:04:44.2607851Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2607947Z               "line": 395
2026-06-22T02:04:44.2608055Z             },
2026-06-22T02:04:44.2608164Z             {
2026-06-22T02:04:44.2608293Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2608401Z               "line": 406
2026-06-22T02:04:44.2608510Z             },
2026-06-22T02:04:44.2608616Z             {
2026-06-22T02:04:44.2608739Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2608848Z               "line": 418
2026-06-22T02:04:44.2609044Z             },
2026-06-22T02:04:44.2609154Z             {
2026-06-22T02:04:44.2609293Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:04:44.2609411Z               "line": 442
2026-06-22T02:04:44.2609531Z             }
2026-06-22T02:04:44.2609659Z           ]
2026-06-22T02:04:44.2609764Z         }
2026-06-22T02:04:44.2609860Z       }
2026-06-22T02:04:44.2609964Z     },
2026-06-22T02:04:44.2610064Z     {
2026-06-22T02:04:44.2610199Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-22T02:04:44.2610388Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-22T02:04:44.2610509Z       "requiredStages": [
2026-06-22T02:04:44.2610613Z         "impl",
2026-06-22T02:04:44.2610713Z         "int"
2026-06-22T02:04:44.2610824Z       ],
2026-06-22T02:04:44.2610927Z       "stages": {
2026-06-22T02:04:44.2611031Z         "doc": {
2026-06-22T02:04:44.2611151Z           "complete": false,
2026-06-22T02:04:44.2611251Z           "evidence": []
2026-06-22T02:04:44.2611360Z         },
2026-06-22T02:04:44.2611466Z         "impl": {
2026-06-22T02:04:44.2611580Z           "complete": true,
2026-06-22T02:04:44.2611689Z           "evidence": [
2026-06-22T02:04:44.2611795Z             {
2026-06-22T02:04:44.2611942Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2612057Z               "line": 22
2026-06-22T02:04:44.2612162Z             }
2026-06-22T02:04:44.2612262Z           ]
2026-06-22T02:04:44.2612372Z         },
2026-06-22T02:04:44.2612477Z         "int": {
2026-06-22T02:04:44.2612590Z           "complete": true,
2026-06-22T02:04:44.2612706Z           "evidence": [
2026-06-22T02:04:44.2612801Z             {
2026-06-22T02:04:44.2612958Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-22T02:04:44.2613064Z               "line": 18
2026-06-22T02:04:44.2613172Z             }
2026-06-22T02:04:44.2613271Z           ]
2026-06-22T02:04:44.2613381Z         },
2026-06-22T02:04:44.2613484Z         "unit": {
2026-06-22T02:04:44.2613593Z           "complete": false,
2026-06-22T02:04:44.2613713Z           "evidence": []
2026-06-22T02:04:44.2613813Z         }
2026-06-22T02:04:44.2613903Z       }
2026-06-22T02:04:44.2614008Z     },
2026-06-22T02:04:44.2614114Z     {
2026-06-22T02:04:44.2614265Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-22T02:04:44.2614595Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-22T02:04:44.2614709Z       "requiredStages": [
2026-06-22T02:04:44.2614809Z         "impl",
2026-06-22T02:04:44.2614909Z         "unit"
2026-06-22T02:04:44.2615006Z       ],
2026-06-22T02:04:44.2615210Z       "stages": {
2026-06-22T02:04:44.2615306Z         "doc": {
2026-06-22T02:04:44.2615419Z           "complete": false,
2026-06-22T02:04:44.2615529Z           "evidence": []
2026-06-22T02:04:44.2615626Z         },
2026-06-22T02:04:44.2615734Z         "impl": {
2026-06-22T02:04:44.2615835Z           "complete": true,
2026-06-22T02:04:44.2615946Z           "evidence": [
2026-06-22T02:04:44.2616048Z             {
2026-06-22T02:04:44.2616206Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2616324Z               "line": 465
2026-06-22T02:04:44.2616436Z             },
2026-06-22T02:04:44.2616541Z             {
2026-06-22T02:04:44.2616690Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2616794Z               "line": 27
2026-06-22T02:04:44.2616900Z             }
2026-06-22T02:04:44.2616991Z           ]
2026-06-22T02:04:44.2617094Z         },
2026-06-22T02:04:44.2617191Z         "int": {
2026-06-22T02:04:44.2617300Z           "complete": false,
2026-06-22T02:04:44.2617419Z           "evidence": []
2026-06-22T02:04:44.2617515Z         },
2026-06-22T02:04:44.2617624Z         "unit": {
2026-06-22T02:04:44.2617734Z           "complete": true,
2026-06-22T02:04:44.2617835Z           "evidence": [
2026-06-22T02:04:44.2617929Z             {
2026-06-22T02:04:44.2618072Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2618183Z               "line": 990
2026-06-22T02:04:44.2618291Z             },
2026-06-22T02:04:44.2618396Z             {
2026-06-22T02:04:44.2618535Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2618644Z               "line": 181
2026-06-22T02:04:44.2618748Z             }
2026-06-22T02:04:44.2618857Z           ]
2026-06-22T02:04:44.2619036Z         }
2026-06-22T02:04:44.2619142Z       }
2026-06-22T02:04:44.2619242Z     },
2026-06-22T02:04:44.2619337Z     {
2026-06-22T02:04:44.2619476Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-22T02:04:44.2619670Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-22T02:04:44.2619795Z       "requiredStages": [
2026-06-22T02:04:44.2619900Z         "impl",
2026-06-22T02:04:44.2620009Z         "unit"
2026-06-22T02:04:44.2620110Z       ],
2026-06-22T02:04:44.2620219Z       "stages": {
2026-06-22T02:04:44.2620324Z         "doc": {
2026-06-22T02:04:44.2620435Z           "complete": false,
2026-06-22T02:04:44.2620548Z           "evidence": []
2026-06-22T02:04:44.2620643Z         },
2026-06-22T02:04:44.2620749Z         "impl": {
2026-06-22T02:04:44.2620858Z           "complete": true,
2026-06-22T02:04:44.2620963Z           "evidence": [
2026-06-22T02:04:44.2621069Z             {
2026-06-22T02:04:44.2621230Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2621346Z               "line": 73
2026-06-22T02:04:44.2621445Z             },
2026-06-22T02:04:44.2621553Z             {
2026-06-22T02:04:44.2621706Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2621821Z               "line": 972
2026-06-22T02:04:44.2621925Z             },
2026-06-22T02:04:44.2622026Z             {
2026-06-22T02:04:44.2622183Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2622278Z               "line": 20
2026-06-22T02:04:44.2622374Z             },
2026-06-22T02:04:44.2622474Z             {
2026-06-22T02:04:44.2622612Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2622727Z               "line": 100
2026-06-22T02:04:44.2622826Z             },
2026-06-22T02:04:44.2622927Z             {
2026-06-22T02:04:44.2623070Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2623184Z               "line": 619
2026-06-22T02:04:44.2623408Z             },
2026-06-22T02:04:44.2623508Z             {
2026-06-22T02:04:44.2623662Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:04:44.2623769Z               "line": 68
2026-06-22T02:04:44.2623879Z             },
2026-06-22T02:04:44.2624063Z             {
2026-06-22T02:04:44.2624211Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:04:44.2624321Z               "line": 80
2026-06-22T02:04:44.2624425Z             }
2026-06-22T02:04:44.2624520Z           ]
2026-06-22T02:04:44.2624617Z         },
2026-06-22T02:04:44.2624721Z         "int": {
2026-06-22T02:04:44.2624830Z           "complete": true,
2026-06-22T02:04:44.2624946Z           "evidence": [
2026-06-22T02:04:44.2625050Z             {
2026-06-22T02:04:44.2625184Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T02:04:44.2625293Z               "line": 44
2026-06-22T02:04:44.2625393Z             }
2026-06-22T02:04:44.2625499Z           ]
2026-06-22T02:04:44.2625608Z         },
2026-06-22T02:04:44.2625708Z         "unit": {
2026-06-22T02:04:44.2625828Z           "complete": true,
2026-06-22T02:04:44.2625932Z           "evidence": [
2026-06-22T02:04:44.2626041Z             {
2026-06-22T02:04:44.2626186Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2626294Z               "line": 1181
2026-06-22T02:04:44.2626400Z             },
2026-06-22T02:04:44.2626506Z             {
2026-06-22T02:04:44.2626656Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.2626761Z               "line": 1197
2026-06-22T02:04:44.2626861Z             },
2026-06-22T02:04:44.2626963Z             {
2026-06-22T02:04:44.2627111Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2627212Z               "line": 2454
2026-06-22T02:04:44.2627316Z             },
2026-06-22T02:04:44.2627412Z             {
2026-06-22T02:04:44.2627541Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2627654Z               "line": 152
2026-06-22T02:04:44.2627756Z             },
2026-06-22T02:04:44.2627865Z             {
2026-06-22T02:04:44.2628003Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2628109Z               "line": 175
2026-06-22T02:04:44.2628213Z             },
2026-06-22T02:04:44.2628318Z             {
2026-06-22T02:04:44.2628461Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2628570Z               "line": 186
2026-06-22T02:04:44.2628676Z             },
2026-06-22T02:04:44.2628772Z             {
2026-06-22T02:04:44.2628894Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2629058Z               "line": 202
2026-06-22T02:04:44.2629142Z             },
2026-06-22T02:04:44.2629246Z             {
2026-06-22T02:04:44.2629385Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:04:44.2629492Z               "line": 216
2026-06-22T02:04:44.2629601Z             },
2026-06-22T02:04:44.2629707Z             {
2026-06-22T02:04:44.2629859Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:04:44.2629964Z               "line": 137
2026-06-22T02:04:44.2630070Z             },
2026-06-22T02:04:44.2630173Z             {
2026-06-22T02:04:44.2630293Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2630417Z               "line": 8152
2026-06-22T02:04:44.2630522Z             },
2026-06-22T02:04:44.2630628Z             {
2026-06-22T02:04:44.2630770Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T02:04:44.2630874Z               "line": 30
2026-06-22T02:04:44.2630981Z             },
2026-06-22T02:04:44.2631085Z             {
2026-06-22T02:04:44.2631228Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T02:04:44.2631333Z               "line": 73
2026-06-22T02:04:44.2631437Z             }
2026-06-22T02:04:44.2631538Z           ]
2026-06-22T02:04:44.2631634Z         }
2026-06-22T02:04:44.2631733Z       }
2026-06-22T02:04:44.2631958Z     },
2026-06-22T02:04:44.2632056Z     {
2026-06-22T02:04:44.2632213Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-22T02:04:44.2636393Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-22T02:04:44.2636674Z       "requiredStages": [
2026-06-22T02:04:44.2636779Z         "impl",
2026-06-22T02:04:44.2636883Z         "unit",
2026-06-22T02:04:44.2636994Z         "int"
2026-06-22T02:04:44.2637099Z       ],
2026-06-22T02:04:44.2637201Z       "stages": {
2026-06-22T02:04:44.2637306Z         "doc": {
2026-06-22T02:04:44.2637416Z           "complete": false,
2026-06-22T02:04:44.2637523Z           "evidence": []
2026-06-22T02:04:44.2637628Z         },
2026-06-22T02:04:44.2637739Z         "impl": {
2026-06-22T02:04:44.2637857Z           "complete": true,
2026-06-22T02:04:44.2637957Z           "evidence": [
2026-06-22T02:04:44.2638068Z             {
2026-06-22T02:04:44.2638224Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2638345Z               "line": 510
2026-06-22T02:04:44.2638440Z             },
2026-06-22T02:04:44.2638548Z             {
2026-06-22T02:04:44.2638702Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2638811Z               "line": 704
2026-06-22T02:04:44.2638921Z             }
2026-06-22T02:04:44.2639140Z           ]
2026-06-22T02:04:44.2639246Z         },
2026-06-22T02:04:44.2639351Z         "int": {
2026-06-22T02:04:44.2639474Z           "complete": true,
2026-06-22T02:04:44.2639589Z           "evidence": [
2026-06-22T02:04:44.2639679Z             {
2026-06-22T02:04:44.2639830Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2639940Z               "line": 1119
2026-06-22T02:04:44.2640034Z             },
2026-06-22T02:04:44.2640143Z             {
2026-06-22T02:04:44.2640291Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T02:04:44.2640400Z               "line": 312
2026-06-22T02:04:44.2640505Z             }
2026-06-22T02:04:44.2640601Z           ]
2026-06-22T02:04:44.2640705Z         },
2026-06-22T02:04:44.2640814Z         "unit": {
2026-06-22T02:04:44.2640921Z           "complete": true,
2026-06-22T02:04:44.2641044Z           "evidence": [
2026-06-22T02:04:44.2641144Z             {
2026-06-22T02:04:44.2641292Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2641391Z               "line": 821
2026-06-22T02:04:44.2641488Z             }
2026-06-22T02:04:44.2641588Z           ]
2026-06-22T02:04:44.2641678Z         }
2026-06-22T02:04:44.2641783Z       }
2026-06-22T02:04:44.2641889Z     },
2026-06-22T02:04:44.2641988Z     {
2026-06-22T02:04:44.2642118Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-22T02:04:44.2642423Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-22T02:04:44.2642650Z       "requiredStages": [
2026-06-22T02:04:44.2642755Z         "impl",
2026-06-22T02:04:44.2642860Z         "unit"
2026-06-22T02:04:44.2642969Z       ],
2026-06-22T02:04:44.2643074Z       "stages": {
2026-06-22T02:04:44.2643274Z         "doc": {
2026-06-22T02:04:44.2643384Z           "complete": true,
2026-06-22T02:04:44.2643499Z           "evidence": [
2026-06-22T02:04:44.2643599Z             {
2026-06-22T02:04:44.2643737Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2643842Z               "line": 133
2026-06-22T02:04:44.2643942Z             }
2026-06-22T02:04:44.2644052Z           ]
2026-06-22T02:04:44.2644152Z         },
2026-06-22T02:04:44.2644266Z         "impl": {
2026-06-22T02:04:44.2644372Z           "complete": true,
2026-06-22T02:04:44.2644481Z           "evidence": [
2026-06-22T02:04:44.2644590Z             {
2026-06-22T02:04:44.2644730Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.2644843Z               "line": 65
2026-06-22T02:04:44.2644947Z             },
2026-06-22T02:04:44.2645057Z             {
2026-06-22T02:04:44.2645198Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2645312Z               "line": 17
2026-06-22T02:04:44.2645413Z             },
2026-06-22T02:04:44.2645522Z             {
2026-06-22T02:04:44.2645675Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2645770Z               "line": 146
2026-06-22T02:04:44.2645879Z             },
2026-06-22T02:04:44.2645995Z             {
2026-06-22T02:04:44.2646137Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2646246Z               "line": 310
2026-06-22T02:04:44.2646347Z             },
2026-06-22T02:04:44.2646452Z             {
2026-06-22T02:04:44.2646580Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.2646695Z               "line": 441
2026-06-22T02:04:44.2646795Z             },
2026-06-22T02:04:44.2646905Z             {
2026-06-22T02:04:44.2647057Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.2647162Z               "line": 32
2026-06-22T02:04:44.2647268Z             },
2026-06-22T02:04:44.2647372Z             {
2026-06-22T02:04:44.2647496Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2647611Z               "line": 1283
2026-06-22T02:04:44.2647720Z             },
2026-06-22T02:04:44.2647833Z             {
2026-06-22T02:04:44.2647957Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2648065Z               "line": 6161
2026-06-22T02:04:44.2648169Z             },
2026-06-22T02:04:44.2648265Z             {
2026-06-22T02:04:44.2648389Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2648494Z               "line": 6443
2026-06-22T02:04:44.2648600Z             }
2026-06-22T02:04:44.2648704Z           ]
2026-06-22T02:04:44.2648808Z         },
2026-06-22T02:04:44.2648909Z         "int": {
2026-06-22T02:04:44.2649108Z           "complete": false,
2026-06-22T02:04:44.2649229Z           "evidence": []
2026-06-22T02:04:44.2649323Z         },
2026-06-22T02:04:44.2649433Z         "unit": {
2026-06-22T02:04:44.2649539Z           "complete": true,
2026-06-22T02:04:44.2649652Z           "evidence": [
2026-06-22T02:04:44.2649753Z             {
2026-06-22T02:04:44.2649892Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2650000Z               "line": 94
2026-06-22T02:04:44.2650111Z             },
2026-06-22T02:04:44.2650216Z             {
2026-06-22T02:04:44.2650343Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2650448Z               "line": 111
2026-06-22T02:04:44.2650552Z             },
2026-06-22T02:04:44.2650645Z             {
2026-06-22T02:04:44.2650775Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2650885Z               "line": 124
2026-06-22T02:04:44.2650988Z             },
2026-06-22T02:04:44.2651089Z             {
2026-06-22T02:04:44.2651218Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2651433Z               "line": 134
2026-06-22T02:04:44.2651542Z             },
2026-06-22T02:04:44.2651656Z             {
2026-06-22T02:04:44.2651777Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2651895Z               "line": 144
2026-06-22T02:04:44.2652096Z             },
2026-06-22T02:04:44.2652190Z             {
2026-06-22T02:04:44.2652324Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:04:44.2652435Z               "line": 156
2026-06-22T02:04:44.2652538Z             },
2026-06-22T02:04:44.2652644Z             {
2026-06-22T02:04:44.2652811Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2652915Z               "line": 746
2026-06-22T02:04:44.2653021Z             },
2026-06-22T02:04:44.2653126Z             {
2026-06-22T02:04:44.2653281Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.2653396Z               "line": 309
2026-06-22T02:04:44.2653501Z             }
2026-06-22T02:04:44.2653605Z           ]
2026-06-22T02:04:44.2653707Z         }
2026-06-22T02:04:44.2653811Z       }
2026-06-22T02:04:44.2653901Z     },
2026-06-22T02:04:44.2654007Z     {
2026-06-22T02:04:44.2654145Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-22T02:04:44.2654307Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-22T02:04:44.2654431Z       "requiredStages": [
2026-06-22T02:04:44.2654530Z         "impl",
2026-06-22T02:04:44.2654637Z         "unit"
2026-06-22T02:04:44.2654740Z       ],
2026-06-22T02:04:44.2654845Z       "stages": {
2026-06-22T02:04:44.2654952Z         "doc": {
2026-06-22T02:04:44.2655065Z           "complete": false,
2026-06-22T02:04:44.2655174Z           "evidence": []
2026-06-22T02:04:44.2655276Z         },
2026-06-22T02:04:44.2655388Z         "impl": {
2026-06-22T02:04:44.2655493Z           "complete": true,
2026-06-22T02:04:44.2655608Z           "evidence": [
2026-06-22T02:04:44.2655720Z             {
2026-06-22T02:04:44.2655867Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.2655978Z               "line": 128
2026-06-22T02:04:44.2656077Z             }
2026-06-22T02:04:44.2656182Z           ]
2026-06-22T02:04:44.2656283Z         },
2026-06-22T02:04:44.2656392Z         "int": {
2026-06-22T02:04:44.2656501Z           "complete": false,
2026-06-22T02:04:44.2656612Z           "evidence": []
2026-06-22T02:04:44.2656716Z         },
2026-06-22T02:04:44.2656816Z         "unit": {
2026-06-22T02:04:44.2656926Z           "complete": true,
2026-06-22T02:04:44.2657035Z           "evidence": [
2026-06-22T02:04:44.2657140Z             {
2026-06-22T02:04:44.2657288Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.2657393Z               "line": 205
2026-06-22T02:04:44.2657504Z             }
2026-06-22T02:04:44.2657603Z           ]
2026-06-22T02:04:44.2657703Z         }
2026-06-22T02:04:44.2657804Z       }
2026-06-22T02:04:44.2657899Z     },
2026-06-22T02:04:44.2658003Z     {
2026-06-22T02:04:44.2658148Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-22T02:04:44.2658332Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-22T02:04:44.2658441Z       "requiredStages": [
2026-06-22T02:04:44.2658550Z         "impl",
2026-06-22T02:04:44.2658654Z         "unit"
2026-06-22T02:04:44.2658763Z       ],
2026-06-22T02:04:44.2658869Z       "stages": {
2026-06-22T02:04:44.2659049Z         "doc": {
2026-06-22T02:04:44.2659169Z           "complete": false,
2026-06-22T02:04:44.2659278Z           "evidence": []
2026-06-22T02:04:44.2659378Z         },
2026-06-22T02:04:44.2659479Z         "impl": {
2026-06-22T02:04:44.2659598Z           "complete": true,
2026-06-22T02:04:44.2659712Z           "evidence": [
2026-06-22T02:04:44.2659808Z             {
2026-06-22T02:04:44.2659955Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2660056Z               "line": 367
2026-06-22T02:04:44.2660165Z             },
2026-06-22T02:04:44.2660265Z             {
2026-06-22T02:04:44.2660508Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2660608Z               "line": 378
2026-06-22T02:04:44.2660705Z             },
2026-06-22T02:04:44.2660814Z             {
2026-06-22T02:04:44.2660950Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2661159Z               "line": 396
2026-06-22T02:04:44.2661253Z             }
2026-06-22T02:04:44.2661363Z           ]
2026-06-22T02:04:44.2661469Z         },
2026-06-22T02:04:44.2661568Z         "int": {
2026-06-22T02:04:44.2661673Z           "complete": false,
2026-06-22T02:04:44.2661778Z           "evidence": []
2026-06-22T02:04:44.2661887Z         },
2026-06-22T02:04:44.2661988Z         "unit": {
2026-06-22T02:04:44.2662093Z           "complete": true,
2026-06-22T02:04:44.2662206Z           "evidence": [
2026-06-22T02:04:44.2662308Z             {
2026-06-22T02:04:44.2662445Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2662555Z               "line": 420
2026-06-22T02:04:44.2662666Z             },
2026-06-22T02:04:44.2662765Z             {
2026-06-22T02:04:44.2662903Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2663009Z               "line": 441
2026-06-22T02:04:44.2663113Z             },
2026-06-22T02:04:44.2663214Z             {
2026-06-22T02:04:44.2663352Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2663471Z               "line": 811
2026-06-22T02:04:44.2663568Z             },
2026-06-22T02:04:44.2663672Z             {
2026-06-22T02:04:44.2663808Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2663913Z               "line": 822
2026-06-22T02:04:44.2664019Z             },
2026-06-22T02:04:44.2664113Z             {
2026-06-22T02:04:44.2664252Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2664362Z               "line": 835
2026-06-22T02:04:44.2664461Z             }
2026-06-22T02:04:44.2664567Z           ]
2026-06-22T02:04:44.2664667Z         }
2026-06-22T02:04:44.2664771Z       }
2026-06-22T02:04:44.2664872Z     },
2026-06-22T02:04:44.2664977Z     {
2026-06-22T02:04:44.2665110Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-22T02:04:44.2672639Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-22T02:04:44.2673058Z       "requiredStages": [
2026-06-22T02:04:44.2673163Z         "impl",
2026-06-22T02:04:44.2673273Z         "unit",
2026-06-22T02:04:44.2673369Z         "int"
2026-06-22T02:04:44.2673473Z       ],
2026-06-22T02:04:44.2673579Z       "stages": {
2026-06-22T02:04:44.2673673Z         "doc": {
2026-06-22T02:04:44.2673779Z           "complete": false,
2026-06-22T02:04:44.2673889Z           "evidence": []
2026-06-22T02:04:44.2674007Z         },
2026-06-22T02:04:44.2674113Z         "impl": {
2026-06-22T02:04:44.2674237Z           "complete": true,
2026-06-22T02:04:44.2674354Z           "evidence": [
2026-06-22T02:04:44.2674469Z             {
2026-06-22T02:04:44.2674622Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2674744Z               "line": 321
2026-06-22T02:04:44.2674851Z             },
2026-06-22T02:04:44.2674937Z             {
2026-06-22T02:04:44.2675084Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2675180Z               "line": 758
2026-06-22T02:04:44.2675289Z             },
2026-06-22T02:04:44.2675389Z             {
2026-06-22T02:04:44.2675527Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2675641Z               "line": 1027
2026-06-22T02:04:44.2675747Z             }
2026-06-22T02:04:44.2675856Z           ]
2026-06-22T02:04:44.2675951Z         },
2026-06-22T02:04:44.2676057Z         "int": {
2026-06-22T02:04:44.2676171Z           "complete": true,
2026-06-22T02:04:44.2676290Z           "evidence": [
2026-06-22T02:04:44.2676386Z             {
2026-06-22T02:04:44.2676570Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.2676685Z               "line": 288
2026-06-22T02:04:44.2676789Z             },
2026-06-22T02:04:44.2676897Z             {
2026-06-22T02:04:44.2677064Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.2677174Z               "line": 414
2026-06-22T02:04:44.2677273Z             }
2026-06-22T02:04:44.2677369Z           ]
2026-06-22T02:04:44.2677475Z         },
2026-06-22T02:04:44.2677574Z         "unit": {
2026-06-22T02:04:44.2677690Z           "complete": true,
2026-06-22T02:04:44.2677794Z           "evidence": [
2026-06-22T02:04:44.2677898Z             {
2026-06-22T02:04:44.2678047Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2678151Z               "line": 2581
2026-06-22T02:04:44.2678265Z             }
2026-06-22T02:04:44.2678357Z           ]
2026-06-22T02:04:44.2678461Z         }
2026-06-22T02:04:44.2678561Z       }
2026-06-22T02:04:44.2678658Z     },
2026-06-22T02:04:44.2678761Z     {
2026-06-22T02:04:44.2678905Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-22T02:04:44.2686178Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-22T02:04:44.2686593Z       "requiredStages": [
2026-06-22T02:04:44.2686708Z         "doc",
2026-06-22T02:04:44.2686812Z         "impl",
2026-06-22T02:04:44.2686912Z         "unit",
2026-06-22T02:04:44.2687018Z         "int"
2026-06-22T02:04:44.2687121Z       ],
2026-06-22T02:04:44.2687215Z       "stages": {
2026-06-22T02:04:44.2687326Z         "doc": {
2026-06-22T02:04:44.2687447Z           "complete": true,
2026-06-22T02:04:44.2687557Z           "evidence": [
2026-06-22T02:04:44.2687663Z             {
2026-06-22T02:04:44.2687795Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2687906Z               "line": 454
2026-06-22T02:04:44.2688006Z             }
2026-06-22T02:04:44.2688110Z           ]
2026-06-22T02:04:44.2688211Z         },
2026-06-22T02:04:44.2688306Z         "impl": {
2026-06-22T02:04:44.2688424Z           "complete": true,
2026-06-22T02:04:44.2688531Z           "evidence": [
2026-06-22T02:04:44.2692284Z             {
2026-06-22T02:04:44.2692471Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.2692593Z               "line": 355
2026-06-22T02:04:44.2692697Z             },
2026-06-22T02:04:44.2692792Z             {
2026-06-22T02:04:44.2692947Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2693063Z               "line": 493
2026-06-22T02:04:44.2693177Z             },
2026-06-22T02:04:44.2693272Z             {
2026-06-22T02:04:44.2693435Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2693554Z               "line": 1740
2026-06-22T02:04:44.2693654Z             },
2026-06-22T02:04:44.2693764Z             {
2026-06-22T02:04:44.2693906Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2694013Z               "line": 347
2026-06-22T02:04:44.2694107Z             }
2026-06-22T02:04:44.2694212Z           ]
2026-06-22T02:04:44.2694303Z         },
2026-06-22T02:04:44.2694408Z         "int": {
2026-06-22T02:04:44.2694527Z           "complete": true,
2026-06-22T02:04:44.2694633Z           "evidence": [
2026-06-22T02:04:44.2694741Z             {
2026-06-22T02:04:44.2694889Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.2694995Z               "line": 737
2026-06-22T02:04:44.2695094Z             },
2026-06-22T02:04:44.2695184Z             {
2026-06-22T02:04:44.2695484Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.2695584Z               "line": 854
2026-06-22T02:04:44.2695685Z             },
2026-06-22T02:04:44.2695775Z             {
2026-06-22T02:04:44.2695952Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-22T02:04:44.2696160Z               "line": 266
2026-06-22T02:04:44.2696262Z             }
2026-06-22T02:04:44.2696367Z           ]
2026-06-22T02:04:44.2696456Z         },
2026-06-22T02:04:44.2696567Z         "unit": {
2026-06-22T02:04:44.2696681Z           "complete": true,
2026-06-22T02:04:44.2696790Z           "evidence": [
2026-06-22T02:04:44.2696896Z             {
2026-06-22T02:04:44.2697039Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2697153Z               "line": 1046
2026-06-22T02:04:44.2697254Z             },
2026-06-22T02:04:44.2697352Z             {
2026-06-22T02:04:44.2697497Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.2697607Z               "line": 1080
2026-06-22T02:04:44.2697710Z             }
2026-06-22T02:04:44.2697795Z           ]
2026-06-22T02:04:44.2697900Z         }
2026-06-22T02:04:44.2697998Z       }
2026-06-22T02:04:44.2698098Z     },
2026-06-22T02:04:44.2698204Z     {
2026-06-22T02:04:44.2698336Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-22T02:04:44.2699066Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-22T02:04:44.2699181Z       "requiredStages": [
2026-06-22T02:04:44.2699295Z         "impl",
2026-06-22T02:04:44.2699400Z         "unit"
2026-06-22T02:04:44.2699506Z       ],
2026-06-22T02:04:44.2699610Z       "stages": {
2026-06-22T02:04:44.2699710Z         "doc": {
2026-06-22T02:04:44.2699821Z           "complete": false,
2026-06-22T02:04:44.2699930Z           "evidence": []
2026-06-22T02:04:44.2700040Z         },
2026-06-22T02:04:44.2700145Z         "impl": {
2026-06-22T02:04:44.2700254Z           "complete": true,
2026-06-22T02:04:44.2700360Z           "evidence": [
2026-06-22T02:04:44.2700460Z             {
2026-06-22T02:04:44.2700610Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.2700724Z               "line": 759
2026-06-22T02:04:44.2700828Z             }
2026-06-22T02:04:44.2700932Z           ]
2026-06-22T02:04:44.2701018Z         },
2026-06-22T02:04:44.2701123Z         "int": {
2026-06-22T02:04:44.2701237Z           "complete": false,
2026-06-22T02:04:44.2701347Z           "evidence": []
2026-06-22T02:04:44.2701447Z         },
2026-06-22T02:04:44.2701556Z         "unit": {
2026-06-22T02:04:44.2701667Z           "complete": true,
2026-06-22T02:04:44.2701781Z           "evidence": [
2026-06-22T02:04:44.2701876Z             {
2026-06-22T02:04:44.2702025Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.2702124Z               "line": 873
2026-06-22T02:04:44.2702229Z             }
2026-06-22T02:04:44.2702335Z           ]
2026-06-22T02:04:44.2702439Z         }
2026-06-22T02:04:44.2702539Z       }
2026-06-22T02:04:44.2702635Z     },
2026-06-22T02:04:44.2702734Z     {
2026-06-22T02:04:44.2702887Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-22T02:04:44.2705325Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-22T02:04:44.2705569Z       "requiredStages": [
2026-06-22T02:04:44.2705682Z         "impl",
2026-06-22T02:04:44.2705789Z         "unit",
2026-06-22T02:04:44.2706011Z         "int"
2026-06-22T02:04:44.2706115Z       ],
2026-06-22T02:04:44.2706226Z       "stages": {
2026-06-22T02:04:44.2706335Z         "doc": {
2026-06-22T02:04:44.2706449Z           "complete": false,
2026-06-22T02:04:44.2706560Z           "evidence": []
2026-06-22T02:04:44.2706659Z         },
2026-06-22T02:04:44.2706759Z         "impl": {
2026-06-22T02:04:44.2706869Z           "complete": true,
2026-06-22T02:04:44.2706974Z           "evidence": [
2026-06-22T02:04:44.2707065Z             {
2026-06-22T02:04:44.2707218Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2707327Z               "line": 705
2026-06-22T02:04:44.2707418Z             }
2026-06-22T02:04:44.2707532Z           ]
2026-06-22T02:04:44.2707637Z         },
2026-06-22T02:04:44.2707743Z         "int": {
2026-06-22T02:04:44.2707847Z           "complete": true,
2026-06-22T02:04:44.2707951Z           "evidence": [
2026-06-22T02:04:44.2708052Z             {
2026-06-22T02:04:44.2708218Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-22T02:04:44.2708327Z               "line": 24
2026-06-22T02:04:44.2708427Z             }
2026-06-22T02:04:44.2708526Z           ]
2026-06-22T02:04:44.2708629Z         },
2026-06-22T02:04:44.2708735Z         "unit": {
2026-06-22T02:04:44.2708849Z           "complete": true,
2026-06-22T02:04:44.2709026Z           "evidence": [
2026-06-22T02:04:44.2709135Z             {
2026-06-22T02:04:44.2709287Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2709394Z               "line": 918
2026-06-22T02:04:44.2709498Z             }
2026-06-22T02:04:44.2709597Z           ]
2026-06-22T02:04:44.2709703Z         }
2026-06-22T02:04:44.2709818Z       }
2026-06-22T02:04:44.2709917Z     },
2026-06-22T02:04:44.2710023Z     {
2026-06-22T02:04:44.2710161Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-22T02:04:44.2713784Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-22T02:04:44.2713959Z       "requiredStages": [
2026-06-22T02:04:44.2714064Z         "impl",
2026-06-22T02:04:44.2714174Z         "unit",
2026-06-22T02:04:44.2714279Z         "int"
2026-06-22T02:04:44.2714378Z       ],
2026-06-22T02:04:44.2714489Z       "stages": {
2026-06-22T02:04:44.2714589Z         "doc": {
2026-06-22T02:04:44.2714707Z           "complete": false,
2026-06-22T02:04:44.2714809Z           "evidence": []
2026-06-22T02:04:44.2714913Z         },
2026-06-22T02:04:44.2715017Z         "impl": {
2026-06-22T02:04:44.2715123Z           "complete": true,
2026-06-22T02:04:44.2715237Z           "evidence": [
2026-06-22T02:04:44.2715453Z             {
2026-06-22T02:04:44.2715604Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2715719Z               "line": 391
2026-06-22T02:04:44.2715824Z             },
2026-06-22T02:04:44.2715919Z             {
2026-06-22T02:04:44.2716058Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2716267Z               "line": 343
2026-06-22T02:04:44.2716368Z             },
2026-06-22T02:04:44.2716472Z             {
2026-06-22T02:04:44.2716604Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2716709Z               "line": 1750
2026-06-22T02:04:44.2716820Z             },
2026-06-22T02:04:44.2716909Z             {
2026-06-22T02:04:44.2717029Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2717139Z               "line": 3191
2026-06-22T02:04:44.2717233Z             }
2026-06-22T02:04:44.2717334Z           ]
2026-06-22T02:04:44.2717439Z         },
2026-06-22T02:04:44.2717543Z         "int": {
2026-06-22T02:04:44.2717658Z           "complete": true,
2026-06-22T02:04:44.2717763Z           "evidence": [
2026-06-22T02:04:44.2717863Z             {
2026-06-22T02:04:44.2718035Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:04:44.2718135Z               "line": 353
2026-06-22T02:04:44.2718244Z             },
2026-06-22T02:04:44.2718346Z             {
2026-06-22T02:04:44.2718511Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-22T02:04:44.2718617Z               "line": 23
2026-06-22T02:04:44.2718717Z             }
2026-06-22T02:04:44.2718825Z           ]
2026-06-22T02:04:44.2718925Z         },
2026-06-22T02:04:44.2719114Z         "unit": {
2026-06-22T02:04:44.2719228Z           "complete": true,
2026-06-22T02:04:44.2719334Z           "evidence": [
2026-06-22T02:04:44.2719438Z             {
2026-06-22T02:04:44.2719581Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2719700Z               "line": 743
2026-06-22T02:04:44.2719805Z             },
2026-06-22T02:04:44.2719906Z             {
2026-06-22T02:04:44.2720034Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2720143Z               "line": 7863
2026-06-22T02:04:44.2720245Z             }
2026-06-22T02:04:44.2720344Z           ]
2026-06-22T02:04:44.2720444Z         }
2026-06-22T02:04:44.2720545Z       }
2026-06-22T02:04:44.2720649Z     },
2026-06-22T02:04:44.2720745Z     {
2026-06-22T02:04:44.2720884Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-22T02:04:44.2724175Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-22T02:04:44.2724330Z       "requiredStages": [
2026-06-22T02:04:44.2724426Z         "impl",
2026-06-22T02:04:44.2724529Z         "unit",
2026-06-22T02:04:44.2724638Z         "int"
2026-06-22T02:04:44.2724734Z       ],
2026-06-22T02:04:44.2724849Z       "stages": {
2026-06-22T02:04:44.2724953Z         "doc": {
2026-06-22T02:04:44.2725068Z           "complete": false,
2026-06-22T02:04:44.2725277Z           "evidence": []
2026-06-22T02:04:44.2725383Z         },
2026-06-22T02:04:44.2725492Z         "impl": {
2026-06-22T02:04:44.2725596Z           "complete": true,
2026-06-22T02:04:44.2725707Z           "evidence": [
2026-06-22T02:04:44.2725806Z             {
2026-06-22T02:04:44.2726060Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2726173Z               "line": 64
2026-06-22T02:04:44.2726284Z             },
2026-06-22T02:04:44.2726384Z             {
2026-06-22T02:04:44.2726516Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2726623Z               "line": 78
2026-06-22T02:04:44.2726727Z             },
2026-06-22T02:04:44.2726827Z             {
2026-06-22T02:04:44.2726971Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2727084Z               "line": 170
2026-06-22T02:04:44.2727188Z             },
2026-06-22T02:04:44.2727289Z             {
2026-06-22T02:04:44.2727441Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2727555Z               "line": 185
2026-06-22T02:04:44.2727651Z             },
2026-06-22T02:04:44.2727755Z             {
2026-06-22T02:04:44.2727904Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2728023Z               "line": 195
2026-06-22T02:04:44.2728122Z             },
2026-06-22T02:04:44.2728233Z             {
2026-06-22T02:04:44.2728376Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2728494Z               "line": 205
2026-06-22T02:04:44.2728596Z             },
2026-06-22T02:04:44.2728695Z             {
2026-06-22T02:04:44.2728834Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2728939Z               "line": 294
2026-06-22T02:04:44.2729105Z             },
2026-06-22T02:04:44.2729202Z             {
2026-06-22T02:04:44.2729362Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2729471Z               "line": 308
2026-06-22T02:04:44.2729580Z             },
2026-06-22T02:04:44.2729674Z             {
2026-06-22T02:04:44.2729817Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2729927Z               "line": 377
2026-06-22T02:04:44.2730022Z             },
2026-06-22T02:04:44.2730136Z             {
2026-06-22T02:04:44.2730275Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2730384Z               "line": 437
2026-06-22T02:04:44.2730481Z             },
2026-06-22T02:04:44.2730580Z             {
2026-06-22T02:04:44.2730713Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2730819Z               "line": 455
2026-06-22T02:04:44.2730928Z             }
2026-06-22T02:04:44.2731032Z           ]
2026-06-22T02:04:44.2731129Z         },
2026-06-22T02:04:44.2731238Z         "int": {
2026-06-22T02:04:44.2731347Z           "complete": true,
2026-06-22T02:04:44.2731458Z           "evidence": [
2026-06-22T02:04:44.2731562Z             {
2026-06-22T02:04:44.2731730Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:04:44.2731844Z               "line": 45
2026-06-22T02:04:44.2731949Z             },
2026-06-22T02:04:44.2732044Z             {
2026-06-22T02:04:44.2732196Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:04:44.2732309Z               "line": 354
2026-06-22T02:04:44.2732410Z             },
2026-06-22T02:04:44.2732513Z             {
2026-06-22T02:04:44.2732679Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T02:04:44.2732790Z               "line": 31
2026-06-22T02:04:44.2732885Z             }
2026-06-22T02:04:44.2732989Z           ]
2026-06-22T02:04:44.2733090Z         },
2026-06-22T02:04:44.2733194Z         "unit": {
2026-06-22T02:04:44.2733318Z           "complete": true,
2026-06-22T02:04:44.2733428Z           "evidence": [
2026-06-22T02:04:44.2733528Z             {
2026-06-22T02:04:44.2733672Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.2733895Z               "line": 727
2026-06-22T02:04:44.2734001Z             }
2026-06-22T02:04:44.2734096Z           ]
2026-06-22T02:04:44.2734205Z         }
2026-06-22T02:04:44.2734311Z       }
2026-06-22T02:04:44.2734411Z     },
2026-06-22T02:04:44.2734515Z     {
2026-06-22T02:04:44.2734730Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-22T02:04:44.2734991Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-22T02:04:44.2735103Z       "requiredStages": [
2026-06-22T02:04:44.2735208Z         "impl",
2026-06-22T02:04:44.2735313Z         "unit"
2026-06-22T02:04:44.2735414Z       ],
2026-06-22T02:04:44.2735522Z       "stages": {
2026-06-22T02:04:44.2735624Z         "doc": {
2026-06-22T02:04:44.2735733Z           "complete": false,
2026-06-22T02:04:44.2735837Z           "evidence": []
2026-06-22T02:04:44.2735938Z         },
2026-06-22T02:04:44.2736048Z         "impl": {
2026-06-22T02:04:44.2736161Z           "complete": true,
2026-06-22T02:04:44.2736277Z           "evidence": [
2026-06-22T02:04:44.2736371Z             {
2026-06-22T02:04:44.2736500Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2736606Z               "line": 14
2026-06-22T02:04:44.2736710Z             },
2026-06-22T02:04:44.2736815Z             {
2026-06-22T02:04:44.2736944Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.2737053Z               "line": 566
2026-06-22T02:04:44.2737154Z             }
2026-06-22T02:04:44.2737259Z           ]
2026-06-22T02:04:44.2737358Z         },
2026-06-22T02:04:44.2737464Z         "int": {
2026-06-22T02:04:44.2737570Z           "complete": false,
2026-06-22T02:04:44.2737677Z           "evidence": []
2026-06-22T02:04:44.2737781Z         },
2026-06-22T02:04:44.2737883Z         "unit": {
2026-06-22T02:04:44.2738001Z           "complete": true,
2026-06-22T02:04:44.2738105Z           "evidence": [
2026-06-22T02:04:44.2738211Z             {
2026-06-22T02:04:44.2738334Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2738445Z               "line": 130
2026-06-22T02:04:44.2738550Z             },
2026-06-22T02:04:44.2738649Z             {
2026-06-22T02:04:44.2738769Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2738869Z               "line": 138
2026-06-22T02:04:44.2739045Z             },
2026-06-22T02:04:44.2739156Z             {
2026-06-22T02:04:44.2739274Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2739379Z               "line": 146
2026-06-22T02:04:44.2739471Z             },
2026-06-22T02:04:44.2739579Z             {
2026-06-22T02:04:44.2739703Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2739814Z               "line": 154
2026-06-22T02:04:44.2739913Z             },
2026-06-22T02:04:44.2740012Z             {
2026-06-22T02:04:44.2740141Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2740248Z               "line": 162
2026-06-22T02:04:44.2740358Z             },
2026-06-22T02:04:44.2740468Z             {
2026-06-22T02:04:44.2740596Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:04:44.2740706Z               "line": 170
2026-06-22T02:04:44.2740807Z             }
2026-06-22T02:04:44.2740911Z           ]
2026-06-22T02:04:44.2741011Z         }
2026-06-22T02:04:44.2741121Z       }
2026-06-22T02:04:44.2741221Z     },
2026-06-22T02:04:44.2741322Z     {
2026-06-22T02:04:44.2741450Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-22T02:04:44.2742366Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-22T02:04:44.2742494Z       "requiredStages": [
2026-06-22T02:04:44.2742595Z         "impl",
2026-06-22T02:04:44.2742709Z         "unit"
2026-06-22T02:04:44.2742803Z       ],
2026-06-22T02:04:44.2742903Z       "stages": {
2026-06-22T02:04:44.2743120Z         "doc": {
2026-06-22T02:04:44.2743235Z           "complete": false,
2026-06-22T02:04:44.2743336Z           "evidence": []
2026-06-22T02:04:44.2743440Z         },
2026-06-22T02:04:44.2743540Z         "impl": {
2026-06-22T02:04:44.2743655Z           "complete": true,
2026-06-22T02:04:44.2743874Z           "evidence": [
2026-06-22T02:04:44.2743984Z             {
2026-06-22T02:04:44.2744159Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2744265Z               "line": 34
2026-06-22T02:04:44.2744369Z             }
2026-06-22T02:04:44.2744479Z           ]
2026-06-22T02:04:44.2744585Z         },
2026-06-22T02:04:44.2744689Z         "int": {
2026-06-22T02:04:44.2744798Z           "complete": false,
2026-06-22T02:04:44.2744904Z           "evidence": []
2026-06-22T02:04:44.2745013Z         },
2026-06-22T02:04:44.2745113Z         "unit": {
2026-06-22T02:04:44.2745229Z           "complete": true,
2026-06-22T02:04:44.2745332Z           "evidence": [
2026-06-22T02:04:44.2745446Z             {
2026-06-22T02:04:44.2745612Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2745720Z               "line": 188
2026-06-22T02:04:44.2745825Z             },
2026-06-22T02:04:44.2745926Z             {
2026-06-22T02:04:44.2746097Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2746203Z               "line": 200
2026-06-22T02:04:44.2746303Z             },
2026-06-22T02:04:44.2746412Z             {
2026-06-22T02:04:44.2746565Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2746674Z               "line": 211
2026-06-22T02:04:44.2746775Z             },
2026-06-22T02:04:44.2746880Z             {
2026-06-22T02:04:44.2747036Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2747133Z               "line": 253
2026-06-22T02:04:44.2747246Z             },
2026-06-22T02:04:44.2747346Z             {
2026-06-22T02:04:44.2747504Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2747614Z               "line": 277
2026-06-22T02:04:44.2747714Z             },
2026-06-22T02:04:44.2747819Z             {
2026-06-22T02:04:44.2747975Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2748091Z               "line": 300
2026-06-22T02:04:44.2748190Z             },
2026-06-22T02:04:44.2748294Z             {
2026-06-22T02:04:44.2748457Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:04:44.2748566Z               "line": 316
2026-06-22T02:04:44.2748675Z             }
2026-06-22T02:04:44.2748772Z           ]
2026-06-22T02:04:44.2748867Z         }
2026-06-22T02:04:44.2749024Z       }
2026-06-22T02:04:44.2749124Z     },
2026-06-22T02:04:44.2749219Z     {
2026-06-22T02:04:44.2749358Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-22T02:04:44.2749920Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-22T02:04:44.2750031Z       "requiredStages": [
2026-06-22T02:04:44.2750134Z         "impl",
2026-06-22T02:04:44.2750230Z         "unit"
2026-06-22T02:04:44.2750336Z       ],
2026-06-22T02:04:44.2750449Z       "stages": {
2026-06-22T02:04:44.2750553Z         "doc": {
2026-06-22T02:04:44.2750663Z           "complete": false,
2026-06-22T02:04:44.2750771Z           "evidence": []
2026-06-22T02:04:44.2750875Z         },
2026-06-22T02:04:44.2750985Z         "impl": {
2026-06-22T02:04:44.2751099Z           "complete": true,
2026-06-22T02:04:44.2751208Z           "evidence": [
2026-06-22T02:04:44.2751305Z             {
2026-06-22T02:04:44.2751447Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2751547Z               "line": 29
2026-06-22T02:04:44.2751653Z             },
2026-06-22T02:04:44.2751757Z             {
2026-06-22T02:04:44.2752001Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2752114Z               "line": 174
2026-06-22T02:04:44.2752216Z             },
2026-06-22T02:04:44.2752324Z             {
2026-06-22T02:04:44.2752463Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2752668Z               "line": 194
2026-06-22T02:04:44.2752778Z             },
2026-06-22T02:04:44.2752884Z             {
2026-06-22T02:04:44.2753025Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2753126Z               "line": 222
2026-06-22T02:04:44.2753232Z             }
2026-06-22T02:04:44.2753330Z           ]
2026-06-22T02:04:44.2753439Z         },
2026-06-22T02:04:44.2753554Z         "int": {
2026-06-22T02:04:44.2753666Z           "complete": false,
2026-06-22T02:04:44.2753775Z           "evidence": []
2026-06-22T02:04:44.2753876Z         },
2026-06-22T02:04:44.2753985Z         "unit": {
2026-06-22T02:04:44.2754090Z           "complete": true,
2026-06-22T02:04:44.2754205Z           "evidence": [
2026-06-22T02:04:44.2754300Z             {
2026-06-22T02:04:44.2754434Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2754544Z               "line": 329
2026-06-22T02:04:44.2754648Z             },
2026-06-22T02:04:44.2754749Z             {
2026-06-22T02:04:44.2754882Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2754992Z               "line": 344
2026-06-22T02:04:44.2755087Z             },
2026-06-22T02:04:44.2755183Z             {
2026-06-22T02:04:44.2755325Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2755436Z               "line": 417
2026-06-22T02:04:44.2755540Z             },
2026-06-22T02:04:44.2755636Z             {
2026-06-22T02:04:44.2755775Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2755888Z               "line": 433
2026-06-22T02:04:44.2755982Z             },
2026-06-22T02:04:44.2756092Z             {
2026-06-22T02:04:44.2756223Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2756342Z               "line": 492
2026-06-22T02:04:44.2756438Z             },
2026-06-22T02:04:44.2756543Z             {
2026-06-22T02:04:44.2756685Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2756796Z               "line": 506
2026-06-22T02:04:44.2756910Z             },
2026-06-22T02:04:44.2757015Z             {
2026-06-22T02:04:44.2757148Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2757257Z               "line": 517
2026-06-22T02:04:44.2757368Z             },
2026-06-22T02:04:44.2757482Z             {
2026-06-22T02:04:44.2757616Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.2757726Z               "line": 528
2026-06-22T02:04:44.2757830Z             }
2026-06-22T02:04:44.2757935Z           ]
2026-06-22T02:04:44.2758036Z         }
2026-06-22T02:04:44.2758144Z       }
2026-06-22T02:04:44.2758255Z     },
2026-06-22T02:04:44.2758361Z     {
2026-06-22T02:04:44.2758517Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-22T02:04:44.2759270Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-22T02:04:44.2759408Z       "requiredStages": [
2026-06-22T02:04:44.2759512Z         "impl",
2026-06-22T02:04:44.2759613Z         "unit"
2026-06-22T02:04:44.2759718Z       ],
2026-06-22T02:04:44.2759822Z       "stages": {
2026-06-22T02:04:44.2759928Z         "doc": {
2026-06-22T02:04:44.2760032Z           "complete": false,
2026-06-22T02:04:44.2760146Z           "evidence": []
2026-06-22T02:04:44.2760247Z         },
2026-06-22T02:04:44.2760351Z         "impl": {
2026-06-22T02:04:44.2760470Z           "complete": true,
2026-06-22T02:04:44.2760572Z           "evidence": [
2026-06-22T02:04:44.2760680Z             {
2026-06-22T02:04:44.2760838Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2761056Z               "line": 27
2026-06-22T02:04:44.2761161Z             },
2026-06-22T02:04:44.2761266Z             {
2026-06-22T02:04:44.2761426Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2761536Z               "line": 110
2026-06-22T02:04:44.2761735Z             },
2026-06-22T02:04:44.2761831Z             {
2026-06-22T02:04:44.2761984Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2762098Z               "line": 153
2026-06-22T02:04:44.2762190Z             },
2026-06-22T02:04:44.2762294Z             {
2026-06-22T02:04:44.2762447Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2762556Z               "line": 182
2026-06-22T02:04:44.2762660Z             },
2026-06-22T02:04:44.2762766Z             {
2026-06-22T02:04:44.2762952Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2763052Z               "line": 31
2026-06-22T02:04:44.2763158Z             },
2026-06-22T02:04:44.2763261Z             {
2026-06-22T02:04:44.2763434Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2763538Z               "line": 113
2026-06-22T02:04:44.2763643Z             },
2026-06-22T02:04:44.2763749Z             {
2026-06-22T02:04:44.2763928Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2764028Z               "line": 138
2026-06-22T02:04:44.2764129Z             }
2026-06-22T02:04:44.2764236Z           ]
2026-06-22T02:04:44.2764330Z         },
2026-06-22T02:04:44.2764437Z         "int": {
2026-06-22T02:04:44.2764550Z           "complete": false,
2026-06-22T02:04:44.2764655Z           "evidence": []
2026-06-22T02:04:44.2764761Z         },
2026-06-22T02:04:44.2764865Z         "unit": {
2026-06-22T02:04:44.2764979Z           "complete": true,
2026-06-22T02:04:44.2765085Z           "evidence": [
2026-06-22T02:04:44.2765185Z             {
2026-06-22T02:04:44.2765357Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2765461Z               "line": 261
2026-06-22T02:04:44.2765576Z             },
2026-06-22T02:04:44.2765677Z             {
2026-06-22T02:04:44.2765833Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2765938Z               "line": 276
2026-06-22T02:04:44.2766048Z             },
2026-06-22T02:04:44.2766157Z             {
2026-06-22T02:04:44.2766306Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2766415Z               "line": 293
2026-06-22T02:04:44.2766514Z             },
2026-06-22T02:04:44.2766614Z             {
2026-06-22T02:04:44.2766765Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2766873Z               "line": 310
2026-06-22T02:04:44.2766979Z             },
2026-06-22T02:04:44.2767080Z             {
2026-06-22T02:04:44.2767236Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2767347Z               "line": 327
2026-06-22T02:04:44.2767451Z             },
2026-06-22T02:04:44.2767561Z             {
2026-06-22T02:04:44.2767709Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.2767818Z               "line": 366
2026-06-22T02:04:44.2767919Z             },
2026-06-22T02:04:44.2768028Z             {
2026-06-22T02:04:44.2768190Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2768305Z               "line": 179
2026-06-22T02:04:44.2768405Z             },
2026-06-22T02:04:44.2768505Z             {
2026-06-22T02:04:44.2768681Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2768786Z               "line": 194
2026-06-22T02:04:44.2768892Z             },
2026-06-22T02:04:44.2769068Z             {
2026-06-22T02:04:44.2769240Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2769358Z               "line": 204
2026-06-22T02:04:44.2769563Z             },
2026-06-22T02:04:44.2769667Z             {
2026-06-22T02:04:44.2769839Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2769954Z               "line": 259
2026-06-22T02:04:44.2770053Z             },
2026-06-22T02:04:44.2770150Z             {
2026-06-22T02:04:44.2770425Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2770531Z               "line": 269
2026-06-22T02:04:44.2770636Z             },
2026-06-22T02:04:44.2770735Z             {
2026-06-22T02:04:44.2770907Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.2771026Z               "line": 283
2026-06-22T02:04:44.2771123Z             }
2026-06-22T02:04:44.2771241Z           ]
2026-06-22T02:04:44.2771340Z         }
2026-06-22T02:04:44.2771447Z       }
2026-06-22T02:04:44.2771541Z     },
2026-06-22T02:04:44.2771645Z     {
2026-06-22T02:04:44.2771773Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-22T02:04:44.2771995Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-22T02:04:44.2772120Z       "requiredStages": [],
2026-06-22T02:04:44.2772225Z       "stages": {
2026-06-22T02:04:44.2772334Z         "doc": {
2026-06-22T02:04:44.2772440Z           "complete": false,
2026-06-22T02:04:44.2772554Z           "evidence": []
2026-06-22T02:04:44.2772663Z         },
2026-06-22T02:04:44.2772764Z         "impl": {
2026-06-22T02:04:44.2772868Z           "complete": false,
2026-06-22T02:04:44.2772973Z           "evidence": []
2026-06-22T02:04:44.2773084Z         },
2026-06-22T02:04:44.2773183Z         "int": {
2026-06-22T02:04:44.2773293Z           "complete": false,
2026-06-22T02:04:44.2773403Z           "evidence": []
2026-06-22T02:04:44.2773512Z         },
2026-06-22T02:04:44.2773621Z         "unit": {
2026-06-22T02:04:44.2773732Z           "complete": false,
2026-06-22T02:04:44.2773846Z           "evidence": []
2026-06-22T02:04:44.2773946Z         }
2026-06-22T02:04:44.2774052Z       }
2026-06-22T02:04:44.2774150Z     },
2026-06-22T02:04:44.2774256Z     {
2026-06-22T02:04:44.2774409Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-22T02:04:44.2775278Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-22T02:04:44.2775407Z       "requiredStages": [
2026-06-22T02:04:44.2775520Z         "impl",
2026-06-22T02:04:44.2775622Z         "unit"
2026-06-22T02:04:44.2775722Z       ],
2026-06-22T02:04:44.2775825Z       "stages": {
2026-06-22T02:04:44.2775927Z         "doc": {
2026-06-22T02:04:44.2776035Z           "complete": false,
2026-06-22T02:04:44.2776150Z           "evidence": []
2026-06-22T02:04:44.2776247Z         },
2026-06-22T02:04:44.2776355Z         "impl": {
2026-06-22T02:04:44.2776470Z           "complete": true,
2026-06-22T02:04:44.2776580Z           "evidence": [
2026-06-22T02:04:44.2776693Z             {
2026-06-22T02:04:44.2776847Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2776956Z               "line": 26
2026-06-22T02:04:44.2777065Z             },
2026-06-22T02:04:44.2777165Z             {
2026-06-22T02:04:44.2777320Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2777429Z               "line": 95
2026-06-22T02:04:44.2777535Z             },
2026-06-22T02:04:44.2777630Z             {
2026-06-22T02:04:44.2777772Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2777888Z               "line": 166
2026-06-22T02:04:44.2777992Z             },
2026-06-22T02:04:44.2778101Z             {
2026-06-22T02:04:44.2778245Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2778354Z               "line": 19
2026-06-22T02:04:44.2778460Z             },
2026-06-22T02:04:44.2778569Z             {
2026-06-22T02:04:44.2778716Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2778917Z               "line": 50
2026-06-22T02:04:44.2779114Z             },
2026-06-22T02:04:44.2779208Z             {
2026-06-22T02:04:44.2779351Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:04:44.2779467Z               "line": 18
2026-06-22T02:04:44.2779666Z             },
2026-06-22T02:04:44.2779777Z             {
2026-06-22T02:04:44.2779908Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:04:44.2780022Z               "line": 71
2026-06-22T02:04:44.2780128Z             },
2026-06-22T02:04:44.2780232Z             {
2026-06-22T02:04:44.2783471Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.2783615Z               "line": 87
2026-06-22T02:04:44.2783724Z             }
2026-06-22T02:04:44.2783823Z           ]
2026-06-22T02:04:44.2783934Z         },
2026-06-22T02:04:44.2784038Z         "int": {
2026-06-22T02:04:44.2784153Z           "complete": false,
2026-06-22T02:04:44.2784259Z           "evidence": []
2026-06-22T02:04:44.2784372Z         },
2026-06-22T02:04:44.2784487Z         "unit": {
2026-06-22T02:04:44.2784593Z           "complete": true,
2026-06-22T02:04:44.2784705Z           "evidence": [
2026-06-22T02:04:44.2784802Z             {
2026-06-22T02:04:44.2784969Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2785087Z               "line": 289
2026-06-22T02:04:44.2785187Z             },
2026-06-22T02:04:44.2785281Z             {
2026-06-22T02:04:44.2785442Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2785552Z               "line": 314
2026-06-22T02:04:44.2785652Z             },
2026-06-22T02:04:44.2785756Z             {
2026-06-22T02:04:44.2785905Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2786023Z               "line": 350
2026-06-22T02:04:44.2786134Z             },
2026-06-22T02:04:44.2786234Z             {
2026-06-22T02:04:44.2786376Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2786487Z               "line": 418
2026-06-22T02:04:44.2786600Z             },
2026-06-22T02:04:44.2786700Z             {
2026-06-22T02:04:44.2786845Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2786948Z               "line": 429
2026-06-22T02:04:44.2787049Z             },
2026-06-22T02:04:44.2787150Z             {
2026-06-22T02:04:44.2787292Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2787398Z               "line": 460
2026-06-22T02:04:44.2787503Z             },
2026-06-22T02:04:44.2787610Z             {
2026-06-22T02:04:44.2787758Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.2787862Z               "line": 471
2026-06-22T02:04:44.2787970Z             },
2026-06-22T02:04:44.2788066Z             {
2026-06-22T02:04:44.2788209Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2788318Z               "line": 77
2026-06-22T02:04:44.2788425Z             },
2026-06-22T02:04:44.2788524Z             {
2026-06-22T02:04:44.2788652Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2788763Z               "line": 97
2026-06-22T02:04:44.2788862Z             },
2026-06-22T02:04:44.2789044Z             {
2026-06-22T02:04:44.2789191Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2789296Z               "line": 112
2026-06-22T02:04:44.2789393Z             },
2026-06-22T02:04:44.2789492Z             {
2026-06-22T02:04:44.2789630Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2789726Z               "line": 123
2026-06-22T02:04:44.2789830Z             },
2026-06-22T02:04:44.2789935Z             {
2026-06-22T02:04:44.2790064Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2790178Z               "line": 130
2026-06-22T02:04:44.2790280Z             },
2026-06-22T02:04:44.2790388Z             {
2026-06-22T02:04:44.2790525Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:04:44.2790773Z               "line": 145
2026-06-22T02:04:44.2790882Z             },
2026-06-22T02:04:44.2790984Z             {
2026-06-22T02:04:44.2791121Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:04:44.2791226Z               "line": 115
2026-06-22T02:04:44.2791427Z             },
2026-06-22T02:04:44.2791526Z             {
2026-06-22T02:04:44.2791670Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:04:44.2791788Z               "line": 130
2026-06-22T02:04:44.2791889Z             },
2026-06-22T02:04:44.2791985Z             {
2026-06-22T02:04:44.2792127Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.2792234Z               "line": 428
2026-06-22T02:04:44.2792328Z             }
2026-06-22T02:04:44.2792423Z           ]
2026-06-22T02:04:44.2792524Z         }
2026-06-22T02:04:44.2792619Z       }
2026-06-22T02:04:44.2792728Z     },
2026-06-22T02:04:44.2792827Z     {
2026-06-22T02:04:44.2792979Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-22T02:04:44.2799212Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-22T02:04:44.2799409Z       "requiredStages": [
2026-06-22T02:04:44.2799517Z         "impl",
2026-06-22T02:04:44.2799614Z         "unit",
2026-06-22T02:04:44.2799727Z         "int"
2026-06-22T02:04:44.2799827Z       ],
2026-06-22T02:04:44.2799938Z       "stages": {
2026-06-22T02:04:44.2800037Z         "doc": {
2026-06-22T02:04:44.2800162Z           "complete": false,
2026-06-22T02:04:44.2800272Z           "evidence": []
2026-06-22T02:04:44.2800370Z         },
2026-06-22T02:04:44.2800467Z         "impl": {
2026-06-22T02:04:44.2800578Z           "complete": true,
2026-06-22T02:04:44.2800690Z           "evidence": [
2026-06-22T02:04:44.2800786Z             {
2026-06-22T02:04:44.2800949Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2801057Z               "line": 944
2026-06-22T02:04:44.2801157Z             },
2026-06-22T02:04:44.2801376Z             {
2026-06-22T02:04:44.2801505Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.2801615Z               "line": 322
2026-06-22T02:04:44.2801714Z             }
2026-06-22T02:04:44.2801815Z           ]
2026-06-22T02:04:44.2801915Z         },
2026-06-22T02:04:44.2802010Z         "int": {
2026-06-22T02:04:44.2802220Z           "complete": true,
2026-06-22T02:04:44.2802320Z           "evidence": [
2026-06-22T02:04:44.2802420Z             {
2026-06-22T02:04:44.2802602Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.2802707Z               "line": 2056
2026-06-22T02:04:44.2802803Z             }
2026-06-22T02:04:44.2802897Z           ]
2026-06-22T02:04:44.2803007Z         },
2026-06-22T02:04:44.2803113Z         "unit": {
2026-06-22T02:04:44.2803221Z           "complete": true,
2026-06-22T02:04:44.2803330Z           "evidence": [
2026-06-22T02:04:44.2803435Z             {
2026-06-22T02:04:44.2803590Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2803704Z               "line": 2625
2026-06-22T02:04:44.2803805Z             },
2026-06-22T02:04:44.2803900Z             {
2026-06-22T02:04:44.2804048Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2804149Z               "line": 2689
2026-06-22T02:04:44.2804262Z             },
2026-06-22T02:04:44.2804367Z             {
2026-06-22T02:04:44.2804497Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2804601Z               "line": 2744
2026-06-22T02:04:44.2804707Z             }
2026-06-22T02:04:44.2804811Z           ]
2026-06-22T02:04:44.2804911Z         }
2026-06-22T02:04:44.2805016Z       }
2026-06-22T02:04:44.2805125Z     },
2026-06-22T02:04:44.2805226Z     {
2026-06-22T02:04:44.2805365Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-22T02:04:44.2806235Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-22T02:04:44.2806364Z       "requiredStages": [
2026-06-22T02:04:44.2806467Z         "doc",
2026-06-22T02:04:44.2806576Z         "impl",
2026-06-22T02:04:44.2806687Z         "unit"
2026-06-22T02:04:44.2806791Z       ],
2026-06-22T02:04:44.2806901Z       "stages": {
2026-06-22T02:04:44.2807006Z         "doc": {
2026-06-22T02:04:44.2807125Z           "complete": true,
2026-06-22T02:04:44.2807239Z           "evidence": [
2026-06-22T02:04:44.2807340Z             {
2026-06-22T02:04:44.2807473Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2807578Z               "line": 374
2026-06-22T02:04:44.2807683Z             }
2026-06-22T02:04:44.2807783Z           ]
2026-06-22T02:04:44.2807888Z         },
2026-06-22T02:04:44.2807993Z         "impl": {
2026-06-22T02:04:44.2808102Z           "complete": true,
2026-06-22T02:04:44.2808203Z           "evidence": [
2026-06-22T02:04:44.2808313Z             {
2026-06-22T02:04:44.2808445Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2808547Z               "line": 206
2026-06-22T02:04:44.2808656Z             },
2026-06-22T02:04:44.2808759Z             {
2026-06-22T02:04:44.2808902Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2809100Z               "line": 310
2026-06-22T02:04:44.2809196Z             },
2026-06-22T02:04:44.2809302Z             {
2026-06-22T02:04:44.2809434Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2809540Z               "line": 568
2026-06-22T02:04:44.2809640Z             },
2026-06-22T02:04:44.2809739Z             {
2026-06-22T02:04:44.2809883Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2809988Z               "line": 583
2026-06-22T02:04:44.2810097Z             },
2026-06-22T02:04:44.2810193Z             {
2026-06-22T02:04:44.2810340Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2810555Z               "line": 1318
2026-06-22T02:04:44.2810655Z             },
2026-06-22T02:04:44.2810765Z             {
2026-06-22T02:04:44.2810912Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.2811017Z               "line": 443
2026-06-22T02:04:44.2811204Z             },
2026-06-22T02:04:44.2811303Z             {
2026-06-22T02:04:44.2811452Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.2811560Z               "line": 590
2026-06-22T02:04:44.2811664Z             },
2026-06-22T02:04:44.2811760Z             {
2026-06-22T02:04:44.2811898Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.2812003Z               "line": 731
2026-06-22T02:04:44.2812104Z             }
2026-06-22T02:04:44.2812204Z           ]
2026-06-22T02:04:44.2812294Z         },
2026-06-22T02:04:44.2812400Z         "int": {
2026-06-22T02:04:44.2812509Z           "complete": false,
2026-06-22T02:04:44.2812618Z           "evidence": []
2026-06-22T02:04:44.2812714Z         },
2026-06-22T02:04:44.2812814Z         "unit": {
2026-06-22T02:04:44.2812928Z           "complete": true,
2026-06-22T02:04:44.2813029Z           "evidence": [
2026-06-22T02:04:44.2813133Z             {
2026-06-22T02:04:44.2813281Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.2813392Z               "line": 1155
2026-06-22T02:04:44.2813495Z             },
2026-06-22T02:04:44.2813596Z             {
2026-06-22T02:04:44.2813749Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-22T02:04:44.2813852Z               "line": 30
2026-06-22T02:04:44.2813957Z             }
2026-06-22T02:04:44.2814052Z           ]
2026-06-22T02:04:44.2814150Z         }
2026-06-22T02:04:44.2814254Z       }
2026-06-22T02:04:44.2814351Z     },
2026-06-22T02:04:44.2814455Z     {
2026-06-22T02:04:44.2814594Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-22T02:04:44.2817938Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-22T02:04:44.2818085Z       "requiredStages": [
2026-06-22T02:04:44.2818196Z         "impl",
2026-06-22T02:04:44.2818295Z         "unit",
2026-06-22T02:04:44.2818400Z         "int"
2026-06-22T02:04:44.2818496Z       ],
2026-06-22T02:04:44.2818605Z       "stages": {
2026-06-22T02:04:44.2818715Z         "doc": {
2026-06-22T02:04:44.2818835Z           "complete": false,
2026-06-22T02:04:44.2819029Z           "evidence": []
2026-06-22T02:04:44.2819117Z         },
2026-06-22T02:04:44.2819225Z         "impl": {
2026-06-22T02:04:44.2819338Z           "complete": true,
2026-06-22T02:04:44.2819458Z           "evidence": [
2026-06-22T02:04:44.2819566Z             {
2026-06-22T02:04:44.2819693Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2819814Z               "line": 718
2026-06-22T02:04:44.2819918Z             },
2026-06-22T02:04:44.2820023Z             {
2026-06-22T02:04:44.2820148Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2820256Z               "line": 887
2026-06-22T02:04:44.2820486Z             }
2026-06-22T02:04:44.2820585Z           ]
2026-06-22T02:04:44.2820696Z         },
2026-06-22T02:04:44.2820791Z         "int": {
2026-06-22T02:04:44.2820905Z           "complete": true,
2026-06-22T02:04:44.2821010Z           "evidence": [
2026-06-22T02:04:44.2821120Z             {
2026-06-22T02:04:44.2821378Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.2821486Z               "line": 420
2026-06-22T02:04:44.2821591Z             }
2026-06-22T02:04:44.2821693Z           ]
2026-06-22T02:04:44.2821796Z         },
2026-06-22T02:04:44.2821901Z         "unit": {
2026-06-22T02:04:44.2822007Z           "complete": true,
2026-06-22T02:04:44.2822121Z           "evidence": [
2026-06-22T02:04:44.2822224Z             {
2026-06-22T02:04:44.2822354Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2822459Z               "line": 1072
2026-06-22T02:04:44.2822568Z             },
2026-06-22T02:04:44.2822664Z             {
2026-06-22T02:04:44.2822792Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2822906Z               "line": 1096
2026-06-22T02:04:44.2823008Z             }
2026-06-22T02:04:44.2823112Z           ]
2026-06-22T02:04:44.2823207Z         }
2026-06-22T02:04:44.2823303Z       }
2026-06-22T02:04:44.2823397Z     },
2026-06-22T02:04:44.2823507Z     {
2026-06-22T02:04:44.2823651Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-22T02:04:44.2827413Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-22T02:04:44.2827531Z       "requiredStages": [
2026-06-22T02:04:44.2827635Z         "impl",
2026-06-22T02:04:44.2827730Z         "unit",
2026-06-22T02:04:44.2827841Z         "int"
2026-06-22T02:04:44.2827949Z       ],
2026-06-22T02:04:44.2828059Z       "stages": {
2026-06-22T02:04:44.2828160Z         "doc": {
2026-06-22T02:04:44.2828259Z           "complete": false,
2026-06-22T02:04:44.2828364Z           "evidence": []
2026-06-22T02:04:44.2828469Z         },
2026-06-22T02:04:44.2828578Z         "impl": {
2026-06-22T02:04:44.2828689Z           "complete": true,
2026-06-22T02:04:44.2828798Z           "evidence": [
2026-06-22T02:04:44.2828898Z             {
2026-06-22T02:04:44.2829099Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2829208Z               "line": 1417
2026-06-22T02:04:44.2829314Z             },
2026-06-22T02:04:44.2829414Z             {
2026-06-22T02:04:44.2829542Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2829653Z               "line": 1441
2026-06-22T02:04:44.2829753Z             }
2026-06-22T02:04:44.2829856Z           ]
2026-06-22T02:04:44.2829956Z         },
2026-06-22T02:04:44.2830060Z         "int": {
2026-06-22T02:04:44.2830277Z           "complete": true,
2026-06-22T02:04:44.2830388Z           "evidence": [
2026-06-22T02:04:44.2830493Z             {
2026-06-22T02:04:44.2830641Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T02:04:44.2830755Z               "line": 329
2026-06-22T02:04:44.2830951Z             }
2026-06-22T02:04:44.2831051Z           ]
2026-06-22T02:04:44.2831145Z         },
2026-06-22T02:04:44.2831256Z         "unit": {
2026-06-22T02:04:44.2831370Z           "complete": true,
2026-06-22T02:04:44.2831479Z           "evidence": [
2026-06-22T02:04:44.2831585Z             {
2026-06-22T02:04:44.2831713Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2831817Z               "line": 8169
2026-06-22T02:04:44.2831910Z             }
2026-06-22T02:04:44.2832013Z           ]
2026-06-22T02:04:44.2832118Z         }
2026-06-22T02:04:44.2832215Z       }
2026-06-22T02:04:44.2832314Z     },
2026-06-22T02:04:44.2832414Z     {
2026-06-22T02:04:44.2832534Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-22T02:04:44.2836387Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-22T02:04:44.2836572Z       "requiredStages": [
2026-06-22T02:04:44.2836677Z         "impl",
2026-06-22T02:04:44.2836783Z         "unit"
2026-06-22T02:04:44.2836878Z       ],
2026-06-22T02:04:44.2836987Z       "stages": {
2026-06-22T02:04:44.2837093Z         "doc": {
2026-06-22T02:04:44.2837216Z           "complete": false,
2026-06-22T02:04:44.2837322Z           "evidence": []
2026-06-22T02:04:44.2837422Z         },
2026-06-22T02:04:44.2837516Z         "impl": {
2026-06-22T02:04:44.2837622Z           "complete": true,
2026-06-22T02:04:44.2837737Z           "evidence": [
2026-06-22T02:04:44.2837835Z             {
2026-06-22T02:04:44.2837978Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2838087Z               "line": 910
2026-06-22T02:04:44.2838185Z             }
2026-06-22T02:04:44.2838290Z           ]
2026-06-22T02:04:44.2838391Z         },
2026-06-22T02:04:44.2838495Z         "int": {
2026-06-22T02:04:44.2838615Z           "complete": false,
2026-06-22T02:04:44.2838724Z           "evidence": []
2026-06-22T02:04:44.2838819Z         },
2026-06-22T02:04:44.2838920Z         "unit": {
2026-06-22T02:04:44.2839129Z           "complete": true,
2026-06-22T02:04:44.2839235Z           "evidence": [
2026-06-22T02:04:44.2839340Z             {
2026-06-22T02:04:44.2839473Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2839578Z               "line": 1112
2026-06-22T02:04:44.2839683Z             }
2026-06-22T02:04:44.2839782Z           ]
2026-06-22T02:04:44.2839884Z         }
2026-06-22T02:04:44.2839979Z       }
2026-06-22T02:04:44.2840088Z     },
2026-06-22T02:04:44.2840189Z     {
2026-06-22T02:04:44.2840449Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-22T02:04:44.2844971Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T02:04:44.2845243Z       "requiredStages": [
2026-06-22T02:04:44.2845349Z         "impl",
2026-06-22T02:04:44.2845444Z         "unit"
2026-06-22T02:04:44.2845547Z       ],
2026-06-22T02:04:44.2845647Z       "stages": {
2026-06-22T02:04:44.2845752Z         "doc": {
2026-06-22T02:04:44.2845864Z           "complete": false,
2026-06-22T02:04:44.2845969Z           "evidence": []
2026-06-22T02:04:44.2846084Z         },
2026-06-22T02:04:44.2846188Z         "impl": {
2026-06-22T02:04:44.2846303Z           "complete": true,
2026-06-22T02:04:44.2846417Z           "evidence": [
2026-06-22T02:04:44.2846517Z             {
2026-06-22T02:04:44.2846656Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2846761Z               "line": 264
2026-06-22T02:04:44.2846865Z             }
2026-06-22T02:04:44.2846961Z           ]
2026-06-22T02:04:44.2847066Z         },
2026-06-22T02:04:44.2847170Z         "int": {
2026-06-22T02:04:44.2847276Z           "complete": false,
2026-06-22T02:04:44.2847385Z           "evidence": []
2026-06-22T02:04:44.2847480Z         },
2026-06-22T02:04:44.2847586Z         "unit": {
2026-06-22T02:04:44.2847686Z           "complete": true,
2026-06-22T02:04:44.2847804Z           "evidence": [
2026-06-22T02:04:44.2847911Z             {
2026-06-22T02:04:44.2848033Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2848143Z               "line": 1094
2026-06-22T02:04:44.2848249Z             },
2026-06-22T02:04:44.2848353Z             {
2026-06-22T02:04:44.2848476Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2848586Z               "line": 1225
2026-06-22T02:04:44.2848693Z             },
2026-06-22T02:04:44.2848793Z             {
2026-06-22T02:04:44.2848932Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.2849145Z               "line": 1227
2026-06-22T02:04:44.2849252Z             }
2026-06-22T02:04:44.2849351Z           ]
2026-06-22T02:04:44.2849455Z         }
2026-06-22T02:04:44.2849557Z       }
2026-06-22T02:04:44.2849657Z     },
2026-06-22T02:04:44.2849761Z     {
2026-06-22T02:04:44.2849895Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-22T02:04:44.2850187Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-22T02:04:44.2850299Z       "requiredStages": [
2026-06-22T02:04:44.2850400Z         "impl",
2026-06-22T02:04:44.2850497Z         "unit"
2026-06-22T02:04:44.2850696Z       ],
2026-06-22T02:04:44.2850802Z       "stages": {
2026-06-22T02:04:44.2850905Z         "doc": {
2026-06-22T02:04:44.2851019Z           "complete": true,
2026-06-22T02:04:44.2851129Z           "evidence": [
2026-06-22T02:04:44.2851236Z             {
2026-06-22T02:04:44.2851373Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2851598Z               "line": 139
2026-06-22T02:04:44.2851698Z             }
2026-06-22T02:04:44.2851799Z           ]
2026-06-22T02:04:44.2851908Z         },
2026-06-22T02:04:44.2852013Z         "impl": {
2026-06-22T02:04:44.2852132Z           "complete": true,
2026-06-22T02:04:44.2852237Z           "evidence": [
2026-06-22T02:04:44.2852332Z             {
2026-06-22T02:04:44.2852466Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T02:04:44.2852576Z               "line": 29
2026-06-22T02:04:44.2852681Z             },
2026-06-22T02:04:44.2852781Z             {
2026-06-22T02:04:44.2852929Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T02:04:44.2853044Z               "line": 67
2026-06-22T02:04:44.2853143Z             },
2026-06-22T02:04:44.2853253Z             {
2026-06-22T02:04:44.2853388Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.2853496Z               "line": 101
2026-06-22T02:04:44.2853592Z             },
2026-06-22T02:04:44.2853703Z             {
2026-06-22T02:04:44.2853858Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2853957Z               "line": 30
2026-06-22T02:04:44.2854063Z             },
2026-06-22T02:04:44.2854163Z             {
2026-06-22T02:04:44.2854306Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2854411Z               "line": 48
2026-06-22T02:04:44.2854515Z             }
2026-06-22T02:04:44.2854626Z           ]
2026-06-22T02:04:44.2854726Z         },
2026-06-22T02:04:44.2854835Z         "int": {
2026-06-22T02:04:44.2854940Z           "complete": false,
2026-06-22T02:04:44.2855050Z           "evidence": []
2026-06-22T02:04:44.2855159Z         },
2026-06-22T02:04:44.2855265Z         "unit": {
2026-06-22T02:04:44.2855374Z           "complete": true,
2026-06-22T02:04:44.2855484Z           "evidence": [
2026-06-22T02:04:44.2855585Z             {
2026-06-22T02:04:44.2855731Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2855841Z               "line": 162
2026-06-22T02:04:44.2855938Z             }
2026-06-22T02:04:44.2856046Z           ]
2026-06-22T02:04:44.2856150Z         }
2026-06-22T02:04:44.2856255Z       }
2026-06-22T02:04:44.2856363Z     },
2026-06-22T02:04:44.2856448Z     {
2026-06-22T02:04:44.2856591Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-22T02:04:44.2857002Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-22T02:04:44.2857125Z       "requiredStages": [
2026-06-22T02:04:44.2857236Z         "doc",
2026-06-22T02:04:44.2857335Z         "impl",
2026-06-22T02:04:44.2857439Z         "unit"
2026-06-22T02:04:44.2857545Z       ],
2026-06-22T02:04:44.2857655Z       "stages": {
2026-06-22T02:04:44.2857759Z         "doc": {
2026-06-22T02:04:44.2857879Z           "complete": true,
2026-06-22T02:04:44.2857989Z           "evidence": [
2026-06-22T02:04:44.2858093Z             {
2026-06-22T02:04:44.2858241Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2858346Z               "line": 151
2026-06-22T02:04:44.2858452Z             }
2026-06-22T02:04:44.2858547Z           ]
2026-06-22T02:04:44.2858651Z         },
2026-06-22T02:04:44.2858762Z         "impl": {
2026-06-22T02:04:44.2858867Z           "complete": true,
2026-06-22T02:04:44.2859055Z           "evidence": [
2026-06-22T02:04:44.2859155Z             {
2026-06-22T02:04:44.2859305Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2859406Z               "line": 22
2026-06-22T02:04:44.2859506Z             }
2026-06-22T02:04:44.2859601Z           ]
2026-06-22T02:04:44.2859705Z         },
2026-06-22T02:04:44.2859921Z         "int": {
2026-06-22T02:04:44.2860030Z           "complete": false,
2026-06-22T02:04:44.2860145Z           "evidence": []
2026-06-22T02:04:44.2860245Z         },
2026-06-22T02:04:44.2860355Z         "unit": {
2026-06-22T02:04:44.2860470Z           "complete": true,
2026-06-22T02:04:44.2860660Z           "evidence": [
2026-06-22T02:04:44.2860770Z             {
2026-06-22T02:04:44.2860907Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2861014Z               "line": 298
2026-06-22T02:04:44.2861118Z             }
2026-06-22T02:04:44.2861222Z           ]
2026-06-22T02:04:44.2861329Z         }
2026-06-22T02:04:44.2861419Z       }
2026-06-22T02:04:44.2861517Z     },
2026-06-22T02:04:44.2861607Z     {
2026-06-22T02:04:44.2861755Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-22T02:04:44.2862220Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-22T02:04:44.2862350Z       "requiredStages": [
2026-06-22T02:04:44.2862454Z         "impl",
2026-06-22T02:04:44.2862554Z         "unit"
2026-06-22T02:04:44.2862655Z       ],
2026-06-22T02:04:44.2862760Z       "stages": {
2026-06-22T02:04:44.2862864Z         "doc": {
2026-06-22T02:04:44.2862980Z           "complete": true,
2026-06-22T02:04:44.2863098Z           "evidence": [
2026-06-22T02:04:44.2863202Z             {
2026-06-22T02:04:44.2863332Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2863441Z               "line": 145
2026-06-22T02:04:44.2863546Z             }
2026-06-22T02:04:44.2863652Z           ]
2026-06-22T02:04:44.2863751Z         },
2026-06-22T02:04:44.2863861Z         "impl": {
2026-06-22T02:04:44.2863976Z           "complete": true,
2026-06-22T02:04:44.2864085Z           "evidence": [
2026-06-22T02:04:44.2864191Z             {
2026-06-22T02:04:44.2864351Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:04:44.2864455Z               "line": 160
2026-06-22T02:04:44.2864571Z             },
2026-06-22T02:04:44.2864676Z             {
2026-06-22T02:04:44.2864832Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2864938Z               "line": 200
2026-06-22T02:04:44.2865047Z             },
2026-06-22T02:04:44.2865147Z             {
2026-06-22T02:04:44.2865305Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.2865419Z               "line": 298
2026-06-22T02:04:44.2865515Z             },
2026-06-22T02:04:44.2865624Z             {
2026-06-22T02:04:44.2865762Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:04:44.2865873Z               "line": 20
2026-06-22T02:04:44.2865982Z             }
2026-06-22T02:04:44.2866091Z           ]
2026-06-22T02:04:44.2866197Z         },
2026-06-22T02:04:44.2866301Z         "int": {
2026-06-22T02:04:44.2866411Z           "complete": false,
2026-06-22T02:04:44.2866521Z           "evidence": []
2026-06-22T02:04:44.2866625Z         },
2026-06-22T02:04:44.2866724Z         "unit": {
2026-06-22T02:04:44.2866829Z           "complete": true,
2026-06-22T02:04:44.2866937Z           "evidence": [
2026-06-22T02:04:44.2867036Z             {
2026-06-22T02:04:44.2867200Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2867309Z               "line": 937
2026-06-22T02:04:44.2867418Z             },
2026-06-22T02:04:44.2867515Z             {
2026-06-22T02:04:44.2867670Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T02:04:44.2867781Z               "line": 88
2026-06-22T02:04:44.2867881Z             },
2026-06-22T02:04:44.2867980Z             {
2026-06-22T02:04:44.2868125Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.2868234Z               "line": 851
2026-06-22T02:04:44.2868334Z             },
2026-06-22T02:04:44.2868444Z             {
2026-06-22T02:04:44.2868601Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.2868717Z               "line": 870
2026-06-22T02:04:44.2868911Z             },
2026-06-22T02:04:44.2869069Z             {
2026-06-22T02:04:44.2869231Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.2869331Z               "line": 279
2026-06-22T02:04:44.2869436Z             },
2026-06-22T02:04:44.2869558Z             {
2026-06-22T02:04:44.2869837Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:04:44.2869946Z               "line": 82
2026-06-22T02:04:44.2870048Z             },
2026-06-22T02:04:44.2870152Z             {
2026-06-22T02:04:44.2870290Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:04:44.2870400Z               "line": 99
2026-06-22T02:04:44.2870495Z             },
2026-06-22T02:04:44.2870595Z             {
2026-06-22T02:04:44.2870729Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:04:44.2870829Z               "line": 119
2026-06-22T02:04:44.2870934Z             }
2026-06-22T02:04:44.2871035Z           ]
2026-06-22T02:04:44.2871134Z         }
2026-06-22T02:04:44.2871229Z       }
2026-06-22T02:04:44.2871330Z     },
2026-06-22T02:04:44.2871429Z     {
2026-06-22T02:04:44.2871569Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-22T02:04:44.2872920Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-22T02:04:44.2873057Z       "requiredStages": [
2026-06-22T02:04:44.2873162Z         "doc",
2026-06-22T02:04:44.2873272Z         "impl",
2026-06-22T02:04:44.2873372Z         "unit"
2026-06-22T02:04:44.2873482Z       ],
2026-06-22T02:04:44.2873587Z       "stages": {
2026-06-22T02:04:44.2873687Z         "doc": {
2026-06-22T02:04:44.2873811Z           "complete": true,
2026-06-22T02:04:44.2873920Z           "evidence": [
2026-06-22T02:04:44.2874020Z             {
2026-06-22T02:04:44.2874150Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2874263Z               "line": 157
2026-06-22T02:04:44.2874368Z             }
2026-06-22T02:04:44.2874474Z           ]
2026-06-22T02:04:44.2874583Z         },
2026-06-22T02:04:44.2874688Z         "impl": {
2026-06-22T02:04:44.2874808Z           "complete": true,
2026-06-22T02:04:44.2874912Z           "evidence": [
2026-06-22T02:04:44.2875007Z             {
2026-06-22T02:04:44.2875169Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.2875268Z               "line": 137
2026-06-22T02:04:44.2875378Z             },
2026-06-22T02:04:44.2875470Z             {
2026-06-22T02:04:44.2875631Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2875736Z               "line": 564
2026-06-22T02:04:44.2875846Z             },
2026-06-22T02:04:44.2875955Z             {
2026-06-22T02:04:44.2876109Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2876213Z               "line": 571
2026-06-22T02:04:44.2876317Z             },
2026-06-22T02:04:44.2876424Z             {
2026-06-22T02:04:44.2876570Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.2876690Z               "line": 227
2026-06-22T02:04:44.2876795Z             }
2026-06-22T02:04:44.2876885Z           ]
2026-06-22T02:04:44.2876980Z         },
2026-06-22T02:04:44.2877082Z         "int": {
2026-06-22T02:04:44.2877199Z           "complete": false,
2026-06-22T02:04:44.2877303Z           "evidence": []
2026-06-22T02:04:44.2877408Z         },
2026-06-22T02:04:44.2877521Z         "unit": {
2026-06-22T02:04:44.2877659Z           "complete": true,
2026-06-22T02:04:44.2877793Z           "evidence": [
2026-06-22T02:04:44.2877892Z             {
2026-06-22T02:04:44.2878046Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2878264Z               "line": 1622
2026-06-22T02:04:44.2878365Z             },
2026-06-22T02:04:44.2878469Z             {
2026-06-22T02:04:44.2878618Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2878737Z               "line": 1680
2026-06-22T02:04:44.2878832Z             },
2026-06-22T02:04:44.2879080Z             {
2026-06-22T02:04:44.2879233Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.2879338Z               "line": 883
2026-06-22T02:04:44.2879432Z             }
2026-06-22T02:04:44.2879538Z           ]
2026-06-22T02:04:44.2879643Z         }
2026-06-22T02:04:44.2879747Z       }
2026-06-22T02:04:44.2879848Z     },
2026-06-22T02:04:44.2879949Z     {
2026-06-22T02:04:44.2880081Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-22T02:04:44.2880299Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-22T02:04:44.2880407Z       "requiredStages": [
2026-06-22T02:04:44.2880511Z         "impl",
2026-06-22T02:04:44.2880618Z         "unit"
2026-06-22T02:04:44.2880722Z       ],
2026-06-22T02:04:44.2880831Z       "stages": {
2026-06-22T02:04:44.2880937Z         "doc": {
2026-06-22T02:04:44.2881055Z           "complete": false,
2026-06-22T02:04:44.2881160Z           "evidence": []
2026-06-22T02:04:44.2881261Z         },
2026-06-22T02:04:44.2881365Z         "impl": {
2026-06-22T02:04:44.2881475Z           "complete": true,
2026-06-22T02:04:44.2881576Z           "evidence": [
2026-06-22T02:04:44.2881680Z             {
2026-06-22T02:04:44.2881819Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2881924Z               "line": 15
2026-06-22T02:04:44.2882028Z             },
2026-06-22T02:04:44.2882129Z             {
2026-06-22T02:04:44.2885335Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2885467Z               "line": 55
2026-06-22T02:04:44.2885571Z             },
2026-06-22T02:04:44.2885681Z             {
2026-06-22T02:04:44.2885833Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2885962Z               "line": 66
2026-06-22T02:04:44.2886068Z             },
2026-06-22T02:04:44.2886171Z             {
2026-06-22T02:04:44.2886321Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2886435Z               "line": 115
2026-06-22T02:04:44.2886548Z             },
2026-06-22T02:04:44.2886655Z             {
2026-06-22T02:04:44.2886801Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2886906Z               "line": 138
2026-06-22T02:04:44.2887012Z             }
2026-06-22T02:04:44.2887107Z           ]
2026-06-22T02:04:44.2887207Z         },
2026-06-22T02:04:44.2887303Z         "int": {
2026-06-22T02:04:44.2887411Z           "complete": false,
2026-06-22T02:04:44.2887522Z           "evidence": []
2026-06-22T02:04:44.2887609Z         },
2026-06-22T02:04:44.2887716Z         "unit": {
2026-06-22T02:04:44.2887830Z           "complete": true,
2026-06-22T02:04:44.2887935Z           "evidence": [
2026-06-22T02:04:44.2888043Z             {
2026-06-22T02:04:44.2888185Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2888291Z               "line": 363
2026-06-22T02:04:44.2888395Z             },
2026-06-22T02:04:44.2888495Z             {
2026-06-22T02:04:44.2888630Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2888738Z               "line": 369
2026-06-22T02:04:44.2888844Z             },
2026-06-22T02:04:44.2889025Z             {
2026-06-22T02:04:44.2889168Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2889278Z               "line": 383
2026-06-22T02:04:44.2889378Z             },
2026-06-22T02:04:44.2889478Z             {
2026-06-22T02:04:44.2889606Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.2889716Z               "line": 392
2026-06-22T02:04:44.2889817Z             },
2026-06-22T02:04:44.2889921Z             {
2026-06-22T02:04:44.2890064Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2890317Z               "line": 195
2026-06-22T02:04:44.2890418Z             },
2026-06-22T02:04:44.2890509Z             {
2026-06-22T02:04:44.2890655Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2890759Z               "line": 208
2026-06-22T02:04:44.2890982Z             },
2026-06-22T02:04:44.2891086Z             {
2026-06-22T02:04:44.2891230Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2891338Z               "line": 271
2026-06-22T02:04:44.2891440Z             },
2026-06-22T02:04:44.2891544Z             {
2026-06-22T02:04:44.2891681Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2891788Z               "line": 290
2026-06-22T02:04:44.2891883Z             },
2026-06-22T02:04:44.2891987Z             {
2026-06-22T02:04:44.2892126Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.2892226Z               "line": 319
2026-06-22T02:04:44.2892335Z             }
2026-06-22T02:04:44.2892432Z           ]
2026-06-22T02:04:44.2892531Z         }
2026-06-22T02:04:44.2892631Z       }
2026-06-22T02:04:44.2892737Z     },
2026-06-22T02:04:44.2892836Z     {
2026-06-22T02:04:44.2892975Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-22T02:04:44.2893278Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-22T02:04:44.2893397Z       "requiredStages": [
2026-06-22T02:04:44.2893510Z         "impl",
2026-06-22T02:04:44.2893605Z         "unit",
2026-06-22T02:04:44.2893705Z         "int"
2026-06-22T02:04:44.2893811Z       ],
2026-06-22T02:04:44.2893915Z       "stages": {
2026-06-22T02:04:44.2894016Z         "doc": {
2026-06-22T02:04:44.2894131Z           "complete": false,
2026-06-22T02:04:44.2894239Z           "evidence": []
2026-06-22T02:04:44.2894335Z         },
2026-06-22T02:04:44.2894445Z         "impl": {
2026-06-22T02:04:44.2894553Z           "complete": true,
2026-06-22T02:04:44.2894655Z           "evidence": [
2026-06-22T02:04:44.2894754Z             {
2026-06-22T02:04:44.2894893Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2895003Z               "line": 480
2026-06-22T02:04:44.2895103Z             },
2026-06-22T02:04:44.2895203Z             {
2026-06-22T02:04:44.2895342Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2895461Z               "line": 1010
2026-06-22T02:04:44.2895556Z             },
2026-06-22T02:04:44.2895661Z             {
2026-06-22T02:04:44.2895799Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2895905Z               "line": 1055
2026-06-22T02:04:44.2896014Z             },
2026-06-22T02:04:44.2896122Z             {
2026-06-22T02:04:44.2896255Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.2896371Z               "line": 1080
2026-06-22T02:04:44.2896474Z             },
2026-06-22T02:04:44.2896575Z             {
2026-06-22T02:04:44.2896718Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2896822Z               "line": 1678
2026-06-22T02:04:44.2896919Z             },
2026-06-22T02:04:44.2897019Z             {
2026-06-22T02:04:44.2897152Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2897262Z               "line": 1923
2026-06-22T02:04:44.2897413Z             },
2026-06-22T02:04:44.2897510Z             {
2026-06-22T02:04:44.2897652Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2897752Z               "line": 2054
2026-06-22T02:04:44.2897859Z             },
2026-06-22T02:04:44.2897966Z             {
2026-06-22T02:04:44.2898105Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.2898212Z               "line": 2102
2026-06-22T02:04:44.2898310Z             },
2026-06-22T02:04:44.2898404Z             {
2026-06-22T02:04:44.2898543Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2898646Z               "line": 46
2026-06-22T02:04:44.2898822Z             },
2026-06-22T02:04:44.2898923Z             {
2026-06-22T02:04:44.2899152Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2899261Z               "line": 200
2026-06-22T02:04:44.2899360Z             },
2026-06-22T02:04:44.2899467Z             {
2026-06-22T02:04:44.2899704Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.2899810Z               "line": 132
2026-06-22T02:04:44.2899909Z             },
2026-06-22T02:04:44.2900014Z             {
2026-06-22T02:04:44.2900148Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2900247Z               "line": 137
2026-06-22T02:04:44.2900353Z             },
2026-06-22T02:04:44.2900454Z             {
2026-06-22T02:04:44.2900596Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2900702Z               "line": 183
2026-06-22T02:04:44.2900806Z             }
2026-06-22T02:04:44.2900911Z           ]
2026-06-22T02:04:44.2901012Z         },
2026-06-22T02:04:44.2901125Z         "int": {
2026-06-22T02:04:44.2901234Z           "complete": true,
2026-06-22T02:04:44.2901338Z           "evidence": [
2026-06-22T02:04:44.2901429Z             {
2026-06-22T02:04:44.2901588Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-22T02:04:44.2901690Z               "line": 27
2026-06-22T02:04:44.2901795Z             },
2026-06-22T02:04:44.2901903Z             {
2026-06-22T02:04:44.2902057Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:04:44.2902166Z               "line": 148
2026-06-22T02:04:44.2902266Z             },
2026-06-22T02:04:44.2902367Z             {
2026-06-22T02:04:44.2902519Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T02:04:44.2902624Z               "line": 200
2026-06-22T02:04:44.2902738Z             }
2026-06-22T02:04:44.2902829Z           ]
2026-06-22T02:04:44.2902934Z         },
2026-06-22T02:04:44.2903039Z         "unit": {
2026-06-22T02:04:44.2903153Z           "complete": true,
2026-06-22T02:04:44.2903264Z           "evidence": [
2026-06-22T02:04:44.2903363Z             {
2026-06-22T02:04:44.2903506Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2903612Z               "line": 366
2026-06-22T02:04:44.2903720Z             },
2026-06-22T02:04:44.2903824Z             {
2026-06-22T02:04:44.2903962Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2904075Z               "line": 398
2026-06-22T02:04:44.2904179Z             },
2026-06-22T02:04:44.2904270Z             {
2026-06-22T02:04:44.2904404Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:04:44.2904509Z               "line": 419
2026-06-22T02:04:44.2904614Z             },
2026-06-22T02:04:44.2904719Z             {
2026-06-22T02:04:44.2904862Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.2904967Z               "line": 631
2026-06-22T02:04:44.2905066Z             },
2026-06-22T02:04:44.2905162Z             {
2026-06-22T02:04:44.2905310Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:04:44.2905419Z               "line": 289
2026-06-22T02:04:44.2905525Z             },
2026-06-22T02:04:44.2905634Z             {
2026-06-22T02:04:44.2905763Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:04:44.2905873Z               "line": 230
2026-06-22T02:04:44.2905977Z             },
2026-06-22T02:04:44.2906077Z             {
2026-06-22T02:04:44.2906207Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2906320Z               "line": 526
2026-06-22T02:04:44.2906426Z             },
2026-06-22T02:04:44.2906522Z             {
2026-06-22T02:04:44.2906663Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.2906768Z               "line": 556
2026-06-22T02:04:44.2906873Z             }
2026-06-22T02:04:44.2906982Z           ]
2026-06-22T02:04:44.2907087Z         }
2026-06-22T02:04:44.2907188Z       }
2026-06-22T02:04:44.2907292Z     },
2026-06-22T02:04:44.2907508Z     {
2026-06-22T02:04:44.2907635Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-22T02:04:44.2909450Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-22T02:04:44.2909673Z       "requiredStages": [
2026-06-22T02:04:44.2909778Z         "doc",
2026-06-22T02:04:44.2909882Z         "impl",
2026-06-22T02:04:44.2909983Z         "unit"
2026-06-22T02:04:44.2910088Z       ],
2026-06-22T02:04:44.2910197Z       "stages": {
2026-06-22T02:04:44.2910289Z         "doc": {
2026-06-22T02:04:44.2910412Z           "complete": true,
2026-06-22T02:04:44.2910521Z           "evidence": [
2026-06-22T02:04:44.2910623Z             {
2026-06-22T02:04:44.2910746Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.2910851Z               "line": 314
2026-06-22T02:04:44.2910957Z             }
2026-06-22T02:04:44.2911065Z           ]
2026-06-22T02:04:44.2911170Z         },
2026-06-22T02:04:44.2911276Z         "impl": {
2026-06-22T02:04:44.2911385Z           "complete": true,
2026-06-22T02:04:44.2911490Z           "evidence": [
2026-06-22T02:04:44.2911596Z             {
2026-06-22T02:04:44.2911761Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:04:44.2911865Z               "line": 33
2026-06-22T02:04:44.2911966Z             },
2026-06-22T02:04:44.2912054Z             {
2026-06-22T02:04:44.2912216Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:04:44.2912322Z               "line": 39
2026-06-22T02:04:44.2912416Z             }
2026-06-22T02:04:44.2912526Z           ]
2026-06-22T02:04:44.2912622Z         },
2026-06-22T02:04:44.2912721Z         "int": {
2026-06-22T02:04:44.2912841Z           "complete": false,
2026-06-22T02:04:44.2912946Z           "evidence": []
2026-06-22T02:04:44.2913045Z         },
2026-06-22T02:04:44.2913156Z         "unit": {
2026-06-22T02:04:44.2913275Z           "complete": true,
2026-06-22T02:04:44.2913379Z           "evidence": [
2026-06-22T02:04:44.2913485Z             {
2026-06-22T02:04:44.2913632Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:04:44.2913742Z               "line": 95
2026-06-22T02:04:44.2913838Z             }
2026-06-22T02:04:44.2913947Z           ]
2026-06-22T02:04:44.2914047Z         }
2026-06-22T02:04:44.2914148Z       }
2026-06-22T02:04:44.2914252Z     },
2026-06-22T02:04:44.2914351Z     {
2026-06-22T02:04:44.2914480Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-22T02:04:44.2916929Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-22T02:04:44.2917068Z       "requiredStages": [
2026-06-22T02:04:44.2917171Z         "impl",
2026-06-22T02:04:44.2917270Z         "unit"
2026-06-22T02:04:44.2917371Z       ],
2026-06-22T02:04:44.2917477Z       "stages": {
2026-06-22T02:04:44.2917575Z         "doc": {
2026-06-22T02:04:44.2917801Z           "complete": false,
2026-06-22T02:04:44.2917909Z           "evidence": []
2026-06-22T02:04:44.2918015Z         },
2026-06-22T02:04:44.2918125Z         "impl": {
2026-06-22T02:04:44.2918233Z           "complete": true,
2026-06-22T02:04:44.2918344Z           "evidence": [
2026-06-22T02:04:44.2918525Z             {
2026-06-22T02:04:44.2918683Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2918792Z               "line": 488
2026-06-22T02:04:44.2918892Z             }
2026-06-22T02:04:44.2919078Z           ]
2026-06-22T02:04:44.2919178Z         },
2026-06-22T02:04:44.2919275Z         "int": {
2026-06-22T02:04:44.2919407Z           "complete": false,
2026-06-22T02:04:44.2919516Z           "evidence": []
2026-06-22T02:04:44.2919615Z         },
2026-06-22T02:04:44.2919724Z         "unit": {
2026-06-22T02:04:44.2919823Z           "complete": true,
2026-06-22T02:04:44.2919933Z           "evidence": [
2026-06-22T02:04:44.2920034Z             {
2026-06-22T02:04:44.2920185Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.2920301Z               "line": 1466
2026-06-22T02:04:44.2920400Z             }
2026-06-22T02:04:44.2920500Z           ]
2026-06-22T02:04:44.2920601Z         }
2026-06-22T02:04:44.2920687Z       }
2026-06-22T02:04:44.2920795Z     },
2026-06-22T02:04:44.2920897Z     {
2026-06-22T02:04:44.2921025Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-22T02:04:44.2923205Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-22T02:04:44.2923338Z       "requiredStages": [
2026-06-22T02:04:44.2923445Z         "unit"
2026-06-22T02:04:44.2923544Z       ],
2026-06-22T02:04:44.2923653Z       "stages": {
2026-06-22T02:04:44.2923754Z         "doc": {
2026-06-22T02:04:44.2923858Z           "complete": false,
2026-06-22T02:04:44.2923973Z           "evidence": []
2026-06-22T02:04:44.2924069Z         },
2026-06-22T02:04:44.2924173Z         "impl": {
2026-06-22T02:04:44.2924283Z           "complete": true,
2026-06-22T02:04:44.2924394Z           "evidence": [
2026-06-22T02:04:44.2924497Z             {
2026-06-22T02:04:44.2924631Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2924742Z               "line": 3520
2026-06-22T02:04:44.2924836Z             },
2026-06-22T02:04:44.2924935Z             {
2026-06-22T02:04:44.2925069Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2925181Z               "line": 3572
2026-06-22T02:04:44.2925280Z             },
2026-06-22T02:04:44.2925372Z             {
2026-06-22T02:04:44.2925500Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2925609Z               "line": 3617
2026-06-22T02:04:44.2925711Z             },
2026-06-22T02:04:44.2925811Z             {
2026-06-22T02:04:44.2925948Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2926058Z               "line": 92
2026-06-22T02:04:44.2926154Z             },
2026-06-22T02:04:44.2926253Z             {
2026-06-22T02:04:44.2926397Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2926525Z               "line": 148
2026-06-22T02:04:44.2926621Z             },
2026-06-22T02:04:44.2926731Z             {
2026-06-22T02:04:44.2926869Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2926975Z               "line": 192
2026-06-22T02:04:44.2927198Z             },
2026-06-22T02:04:44.2927299Z             {
2026-06-22T02:04:44.2927431Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2927537Z               "line": 200
2026-06-22T02:04:44.2927642Z             },
2026-06-22T02:04:44.2927745Z             {
2026-06-22T02:04:44.2927975Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2928079Z               "line": 211
2026-06-22T02:04:44.2928188Z             },
2026-06-22T02:04:44.2928294Z             {
2026-06-22T02:04:44.2928427Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2928532Z               "line": 265
2026-06-22T02:04:44.2928637Z             },
2026-06-22T02:04:44.2928741Z             {
2026-06-22T02:04:44.2928871Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2929052Z               "line": 279
2026-06-22T02:04:44.2929157Z             }
2026-06-22T02:04:44.2929257Z           ]
2026-06-22T02:04:44.2929347Z         },
2026-06-22T02:04:44.2929457Z         "int": {
2026-06-22T02:04:44.2929563Z           "complete": false,
2026-06-22T02:04:44.2929666Z           "evidence": []
2026-06-22T02:04:44.2929757Z         },
2026-06-22T02:04:44.2929854Z         "unit": {
2026-06-22T02:04:44.2929962Z           "complete": true,
2026-06-22T02:04:44.2930071Z           "evidence": [
2026-06-22T02:04:44.2930185Z             {
2026-06-22T02:04:44.2930317Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2930416Z               "line": 419
2026-06-22T02:04:44.2930517Z             },
2026-06-22T02:04:44.2930617Z             {
2026-06-22T02:04:44.2930755Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2930866Z               "line": 470
2026-06-22T02:04:44.2930970Z             },
2026-06-22T02:04:44.2931070Z             {
2026-06-22T02:04:44.2931204Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2931304Z               "line": 499
2026-06-22T02:04:44.2931414Z             },
2026-06-22T02:04:44.2931528Z             {
2026-06-22T02:04:44.2931656Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2931767Z               "line": 526
2026-06-22T02:04:44.2931866Z             }
2026-06-22T02:04:44.2931961Z           ]
2026-06-22T02:04:44.2932048Z         }
2026-06-22T02:04:44.2932158Z       }
2026-06-22T02:04:44.2932262Z     },
2026-06-22T02:04:44.2932353Z     {
2026-06-22T02:04:44.2932487Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-22T02:04:44.2932692Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-22T02:04:44.2932816Z       "requiredStages": [
2026-06-22T02:04:44.2932919Z         "impl",
2026-06-22T02:04:44.2933024Z         "unit"
2026-06-22T02:04:44.2933133Z       ],
2026-06-22T02:04:44.2933236Z       "stages": {
2026-06-22T02:04:44.2933346Z         "doc": {
2026-06-22T02:04:44.2933456Z           "complete": false,
2026-06-22T02:04:44.2933569Z           "evidence": []
2026-06-22T02:04:44.2933666Z         },
2026-06-22T02:04:44.2933770Z         "impl": {
2026-06-22T02:04:44.2933874Z           "complete": true,
2026-06-22T02:04:44.2933981Z           "evidence": [
2026-06-22T02:04:44.2934076Z             {
2026-06-22T02:04:44.2934237Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2934348Z               "line": 62
2026-06-22T02:04:44.2934447Z             },
2026-06-22T02:04:44.2934557Z             {
2026-06-22T02:04:44.2934706Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2934805Z               "line": 71
2026-06-22T02:04:44.2934910Z             },
2026-06-22T02:04:44.2935016Z             {
2026-06-22T02:04:44.2935158Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2935264Z               "line": 80
2026-06-22T02:04:44.2935368Z             },
2026-06-22T02:04:44.2935476Z             {
2026-06-22T02:04:44.2935610Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.2935708Z               "line": 88
2026-06-22T02:04:44.2935912Z             },
2026-06-22T02:04:44.2936023Z             {
2026-06-22T02:04:44.2936174Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2936290Z               "line": 33
2026-06-22T02:04:44.2936380Z             },
2026-06-22T02:04:44.2936484Z             {
2026-06-22T02:04:44.2936737Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2936848Z               "line": 65
2026-06-22T02:04:44.2936957Z             },
2026-06-22T02:04:44.2937061Z             {
2026-06-22T02:04:44.2937211Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2937314Z               "line": 74
2026-06-22T02:04:44.2937419Z             },
2026-06-22T02:04:44.2937521Z             {
2026-06-22T02:04:44.2937657Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2937763Z               "line": 93
2026-06-22T02:04:44.2937869Z             },
2026-06-22T02:04:44.2937972Z             {
2026-06-22T02:04:44.2938112Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2938226Z               "line": 102
2026-06-22T02:04:44.2938324Z             },
2026-06-22T02:04:44.2938429Z             {
2026-06-22T02:04:44.2938559Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2938663Z               "line": 111
2026-06-22T02:04:44.2938772Z             },
2026-06-22T02:04:44.2938878Z             {
2026-06-22T02:04:44.2939087Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2939192Z               "line": 122
2026-06-22T02:04:44.2939287Z             },
2026-06-22T02:04:44.2939388Z             {
2026-06-22T02:04:44.2939517Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2939626Z               "line": 140
2026-06-22T02:04:44.2939736Z             },
2026-06-22T02:04:44.2939836Z             {
2026-06-22T02:04:44.2939979Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2940076Z               "line": 149
2026-06-22T02:04:44.2940184Z             },
2026-06-22T02:04:44.2940294Z             {
2026-06-22T02:04:44.2940424Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2940527Z               "line": 158
2026-06-22T02:04:44.2940617Z             },
2026-06-22T02:04:44.2940717Z             {
2026-06-22T02:04:44.2940858Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2940962Z               "line": 169
2026-06-22T02:04:44.2941063Z             },
2026-06-22T02:04:44.2941164Z             {
2026-06-22T02:04:44.2941306Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2941412Z               "line": 177
2026-06-22T02:04:44.2941521Z             },
2026-06-22T02:04:44.2941620Z             {
2026-06-22T02:04:44.2941764Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2941878Z               "line": 186
2026-06-22T02:04:44.2941974Z             },
2026-06-22T02:04:44.2942084Z             {
2026-06-22T02:04:44.2942216Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2942332Z               "line": 195
2026-06-22T02:04:44.2942436Z             },
2026-06-22T02:04:44.2942540Z             {
2026-06-22T02:04:44.2942685Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2942793Z               "line": 204
2026-06-22T02:04:44.2942899Z             },
2026-06-22T02:04:44.2942999Z             {
2026-06-22T02:04:44.2943152Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2943257Z               "line": 216
2026-06-22T02:04:44.2943357Z             },
2026-06-22T02:04:44.2943465Z             {
2026-06-22T02:04:44.2943594Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2943707Z               "line": 223
2026-06-22T02:04:44.2943805Z             },
2026-06-22T02:04:44.2943906Z             {
2026-06-22T02:04:44.2944040Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2944153Z               "line": 232
2026-06-22T02:04:44.2944260Z             },
2026-06-22T02:04:44.2944468Z             {
2026-06-22T02:04:44.2944613Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2944712Z               "line": 239
2026-06-22T02:04:44.2944812Z             },
2026-06-22T02:04:44.2944918Z             {
2026-06-22T02:04:44.2945051Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2945256Z               "line": 306
2026-06-22T02:04:44.2945360Z             },
2026-06-22T02:04:44.2945470Z             {
2026-06-22T02:04:44.2945604Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2945708Z               "line": 318
2026-06-22T02:04:44.2945815Z             },
2026-06-22T02:04:44.2945919Z             {
2026-06-22T02:04:44.2946046Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2946155Z               "line": 405
2026-06-22T02:04:44.2946260Z             }
2026-06-22T02:04:44.2946358Z           ]
2026-06-22T02:04:44.2946468Z         },
2026-06-22T02:04:44.2946607Z         "int": {
2026-06-22T02:04:44.2946725Z           "complete": false,
2026-06-22T02:04:44.2946841Z           "evidence": []
2026-06-22T02:04:44.2946941Z         },
2026-06-22T02:04:44.2947045Z         "unit": {
2026-06-22T02:04:44.2947151Z           "complete": true,
2026-06-22T02:04:44.2947255Z           "evidence": [
2026-06-22T02:04:44.2947359Z             {
2026-06-22T02:04:44.2947499Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2947603Z               "line": 487
2026-06-22T02:04:44.2947707Z             },
2026-06-22T02:04:44.2947814Z             {
2026-06-22T02:04:44.2947946Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2948052Z               "line": 528
2026-06-22T02:04:44.2948156Z             },
2026-06-22T02:04:44.2948256Z             {
2026-06-22T02:04:44.2948400Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2948508Z               "line": 541
2026-06-22T02:04:44.2948609Z             },
2026-06-22T02:04:44.2948705Z             {
2026-06-22T02:04:44.2948837Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.2949013Z               "line": 627
2026-06-22T02:04:44.2949114Z             }
2026-06-22T02:04:44.2949213Z           ]
2026-06-22T02:04:44.2949318Z         }
2026-06-22T02:04:44.2949414Z       }
2026-06-22T02:04:44.2949514Z     },
2026-06-22T02:04:44.2949623Z     {
2026-06-22T02:04:44.2949752Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-22T02:04:44.2949977Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-22T02:04:44.2950086Z       "requiredStages": [
2026-06-22T02:04:44.2950181Z         "impl",
2026-06-22T02:04:44.2950287Z         "unit"
2026-06-22T02:04:44.2950387Z       ],
2026-06-22T02:04:44.2950491Z       "stages": {
2026-06-22T02:04:44.2950597Z         "doc": {
2026-06-22T02:04:44.2950711Z           "complete": false,
2026-06-22T02:04:44.2950830Z           "evidence": []
2026-06-22T02:04:44.2950931Z         },
2026-06-22T02:04:44.2951045Z         "impl": {
2026-06-22T02:04:44.2951158Z           "complete": true,
2026-06-22T02:04:44.2951262Z           "evidence": [
2026-06-22T02:04:44.2951376Z             {
2026-06-22T02:04:44.2951512Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.2951628Z               "line": 175
2026-06-22T02:04:44.2951732Z             },
2026-06-22T02:04:44.2951841Z             {
2026-06-22T02:04:44.2951976Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2952095Z               "line": 171
2026-06-22T02:04:44.2952195Z             }
2026-06-22T02:04:44.2952296Z           ]
2026-06-22T02:04:44.2952395Z         },
2026-06-22T02:04:44.2952500Z         "int": {
2026-06-22T02:04:44.2952610Z           "complete": false,
2026-06-22T02:04:44.2952724Z           "evidence": []
2026-06-22T02:04:44.2952829Z         },
2026-06-22T02:04:44.2952935Z         "unit": {
2026-06-22T02:04:44.2953039Z           "complete": true,
2026-06-22T02:04:44.2953144Z           "evidence": [
2026-06-22T02:04:44.2953353Z             {
2026-06-22T02:04:44.2953503Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.2953611Z               "line": 297
2026-06-22T02:04:44.2953716Z             },
2026-06-22T02:04:44.2953822Z             {
2026-06-22T02:04:44.2953964Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2954164Z               "line": 836
2026-06-22T02:04:44.2954267Z             },
2026-06-22T02:04:44.2954370Z             {
2026-06-22T02:04:44.2954504Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.2954610Z               "line": 849
2026-06-22T02:04:44.2954713Z             }
2026-06-22T02:04:44.2954810Z           ]
2026-06-22T02:04:44.2954910Z         }
2026-06-22T02:04:44.2955004Z       }
2026-06-22T02:04:44.2955111Z     },
2026-06-22T02:04:44.2955206Z     {
2026-06-22T02:04:44.2955343Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-22T02:04:44.2955502Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-22T02:04:44.2955625Z       "requiredStages": [
2026-06-22T02:04:44.2955725Z         "impl",
2026-06-22T02:04:44.2955821Z         "unit"
2026-06-22T02:04:44.2955925Z       ],
2026-06-22T02:04:44.2956030Z       "stages": {
2026-06-22T02:04:44.2956141Z         "doc": {
2026-06-22T02:04:44.2956264Z           "complete": false,
2026-06-22T02:04:44.2956384Z           "evidence": []
2026-06-22T02:04:44.2956484Z         },
2026-06-22T02:04:44.2956587Z         "impl": {
2026-06-22T02:04:44.2956706Z           "complete": true,
2026-06-22T02:04:44.2956810Z           "evidence": [
2026-06-22T02:04:44.2956918Z             {
2026-06-22T02:04:44.2957066Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.2957172Z               "line": 116
2026-06-22T02:04:44.2957280Z             },
2026-06-22T02:04:44.2957382Z             {
2026-06-22T02:04:44.2957543Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.2957638Z               "line": 507
2026-06-22T02:04:44.2957749Z             }
2026-06-22T02:04:44.2957858Z           ]
2026-06-22T02:04:44.2957958Z         },
2026-06-22T02:04:44.2958059Z         "int": {
2026-06-22T02:04:44.2958173Z           "complete": false,
2026-06-22T02:04:44.2958282Z           "evidence": []
2026-06-22T02:04:44.2958378Z         },
2026-06-22T02:04:44.2958492Z         "unit": {
2026-06-22T02:04:44.2958607Z           "complete": true,
2026-06-22T02:04:44.2958712Z           "evidence": [
2026-06-22T02:04:44.2958816Z             {
2026-06-22T02:04:44.2959036Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.2959141Z               "line": 541
2026-06-22T02:04:44.2959247Z             }
2026-06-22T02:04:44.2959351Z           ]
2026-06-22T02:04:44.2959444Z         }
2026-06-22T02:04:44.2959534Z       }
2026-06-22T02:04:44.2959641Z     },
2026-06-22T02:04:44.2959740Z     {
2026-06-22T02:04:44.2959888Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-22T02:04:44.2960083Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-22T02:04:44.2960208Z       "requiredStages": [
2026-06-22T02:04:44.2960312Z         "impl",
2026-06-22T02:04:44.2960407Z         "unit"
2026-06-22T02:04:44.2960508Z       ],
2026-06-22T02:04:44.2960614Z       "stages": {
2026-06-22T02:04:44.2960722Z         "doc": {
2026-06-22T02:04:44.2960837Z           "complete": false,
2026-06-22T02:04:44.2960942Z           "evidence": []
2026-06-22T02:04:44.2961051Z         },
2026-06-22T02:04:44.2961152Z         "impl": {
2026-06-22T02:04:44.2961262Z           "complete": true,
2026-06-22T02:04:44.2961371Z           "evidence": [
2026-06-22T02:04:44.2961481Z             {
2026-06-22T02:04:44.2961628Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.2961732Z               "line": 552
2026-06-22T02:04:44.2961842Z             },
2026-06-22T02:04:44.2961936Z             {
2026-06-22T02:04:44.2962087Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2962193Z               "line": 28
2026-06-22T02:04:44.2962421Z             }
2026-06-22T02:04:44.2962522Z           ]
2026-06-22T02:04:44.2962621Z         },
2026-06-22T02:04:44.2962726Z         "int": {
2026-06-22T02:04:44.2962841Z           "complete": false,
2026-06-22T02:04:44.2962941Z           "evidence": []
2026-06-22T02:04:44.2963045Z         },
2026-06-22T02:04:44.2963251Z         "unit": {
2026-06-22T02:04:44.2963360Z           "complete": true,
2026-06-22T02:04:44.2963462Z           "evidence": [
2026-06-22T02:04:44.2963571Z             {
2026-06-22T02:04:44.2963714Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.2963819Z               "line": 229
2026-06-22T02:04:44.2963918Z             }
2026-06-22T02:04:44.2964024Z           ]
2026-06-22T02:04:44.2964115Z         }
2026-06-22T02:04:44.2964209Z       }
2026-06-22T02:04:44.2964314Z     },
2026-06-22T02:04:44.2964416Z     {
2026-06-22T02:04:44.2964548Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-22T02:04:44.2964709Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-22T02:04:44.2964836Z       "requiredStages": [],
2026-06-22T02:04:44.2964930Z       "stages": {
2026-06-22T02:04:44.2965041Z         "doc": {
2026-06-22T02:04:44.2965151Z           "complete": false,
2026-06-22T02:04:44.2965255Z           "evidence": []
2026-06-22T02:04:44.2965366Z         },
2026-06-22T02:04:44.2965470Z         "impl": {
2026-06-22T02:04:44.2965593Z           "complete": false,
2026-06-22T02:04:44.2965699Z           "evidence": []
2026-06-22T02:04:44.2965804Z         },
2026-06-22T02:04:44.2965912Z         "int": {
2026-06-22T02:04:44.2966019Z           "complete": false,
2026-06-22T02:04:44.2966128Z           "evidence": []
2026-06-22T02:04:44.2966227Z         },
2026-06-22T02:04:44.2969400Z         "unit": {
2026-06-22T02:04:44.2969554Z           "complete": false,
2026-06-22T02:04:44.2969676Z           "evidence": []
2026-06-22T02:04:44.2969773Z         }
2026-06-22T02:04:44.2969873Z       }
2026-06-22T02:04:44.2969972Z     },
2026-06-22T02:04:44.2970076Z     {
2026-06-22T02:04:44.2970220Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-22T02:04:44.2970400Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-22T02:04:44.2970521Z       "requiredStages": [
2026-06-22T02:04:44.2970625Z         "impl",
2026-06-22T02:04:44.2970729Z         "unit"
2026-06-22T02:04:44.2970835Z       ],
2026-06-22T02:04:44.2970940Z       "stages": {
2026-06-22T02:04:44.2971044Z         "doc": {
2026-06-22T02:04:44.2971160Z           "complete": false,
2026-06-22T02:04:44.2971278Z           "evidence": []
2026-06-22T02:04:44.2971382Z         },
2026-06-22T02:04:44.2971489Z         "impl": {
2026-06-22T02:04:44.2971602Z           "complete": true,
2026-06-22T02:04:44.2971693Z           "evidence": [
2026-06-22T02:04:44.2971799Z             {
2026-06-22T02:04:44.2971936Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:04:44.2972046Z               "line": 19
2026-06-22T02:04:44.2972151Z             },
2026-06-22T02:04:44.2972245Z             {
2026-06-22T02:04:44.2972397Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2972510Z               "line": 463
2026-06-22T02:04:44.2972615Z             },
2026-06-22T02:04:44.2972705Z             {
2026-06-22T02:04:44.2972848Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2972967Z               "line": 499
2026-06-22T02:04:44.2973053Z             },
2026-06-22T02:04:44.2973159Z             {
2026-06-22T02:04:44.2973295Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2973402Z               "line": 547
2026-06-22T02:04:44.2973497Z             },
2026-06-22T02:04:44.2973606Z             {
2026-06-22T02:04:44.2973740Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2973849Z               "line": 15
2026-06-22T02:04:44.2973954Z             },
2026-06-22T02:04:44.2974055Z             {
2026-06-22T02:04:44.2974192Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2974445Z               "line": 48
2026-06-22T02:04:44.2974550Z             },
2026-06-22T02:04:44.2974647Z             {
2026-06-22T02:04:44.2974783Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2974889Z               "line": 119
2026-06-22T02:04:44.2974991Z             },
2026-06-22T02:04:44.2975178Z             {
2026-06-22T02:04:44.2975312Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.2975415Z               "line": 3948
2026-06-22T02:04:44.2975514Z             }
2026-06-22T02:04:44.2975615Z           ]
2026-06-22T02:04:44.2975716Z         },
2026-06-22T02:04:44.2975806Z         "int": {
2026-06-22T02:04:44.2975911Z           "complete": false,
2026-06-22T02:04:44.2976026Z           "evidence": []
2026-06-22T02:04:44.2976130Z         },
2026-06-22T02:04:44.2976236Z         "unit": {
2026-06-22T02:04:44.2976345Z           "complete": true,
2026-06-22T02:04:44.2976449Z           "evidence": [
2026-06-22T02:04:44.2976550Z             {
2026-06-22T02:04:44.2976697Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2976802Z               "line": 765
2026-06-22T02:04:44.2976904Z             },
2026-06-22T02:04:44.2977007Z             {
2026-06-22T02:04:44.2977136Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2977256Z               "line": 165
2026-06-22T02:04:44.2977350Z             },
2026-06-22T02:04:44.2977456Z             {
2026-06-22T02:04:44.2977590Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:04:44.2977698Z               "line": 175
2026-06-22T02:04:44.2977802Z             }
2026-06-22T02:04:44.2977902Z           ]
2026-06-22T02:04:44.2978001Z         }
2026-06-22T02:04:44.2978100Z       }
2026-06-22T02:04:44.2978206Z     },
2026-06-22T02:04:44.2978306Z     {
2026-06-22T02:04:44.2978434Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-22T02:04:44.2979480Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-22T02:04:44.2979598Z       "requiredStages": [
2026-06-22T02:04:44.2979708Z         "impl",
2026-06-22T02:04:44.2979804Z         "unit"
2026-06-22T02:04:44.2979917Z       ],
2026-06-22T02:04:44.2980023Z       "stages": {
2026-06-22T02:04:44.2980128Z         "doc": {
2026-06-22T02:04:44.2980236Z           "complete": false,
2026-06-22T02:04:44.2980338Z           "evidence": []
2026-06-22T02:04:44.2980443Z         },
2026-06-22T02:04:44.2980541Z         "impl": {
2026-06-22T02:04:44.2980660Z           "complete": true,
2026-06-22T02:04:44.2980766Z           "evidence": [
2026-06-22T02:04:44.2980866Z             {
2026-06-22T02:04:44.2981008Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2981105Z               "line": 192
2026-06-22T02:04:44.2981209Z             },
2026-06-22T02:04:44.2981313Z             {
2026-06-22T02:04:44.2981452Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2981556Z               "line": 279
2026-06-22T02:04:44.2981657Z             }
2026-06-22T02:04:44.2981753Z           ]
2026-06-22T02:04:44.2981853Z         },
2026-06-22T02:04:44.2981962Z         "int": {
2026-06-22T02:04:44.2982068Z           "complete": false,
2026-06-22T02:04:44.2982172Z           "evidence": []
2026-06-22T02:04:44.2982277Z         },
2026-06-22T02:04:44.2982373Z         "unit": {
2026-06-22T02:04:44.2982491Z           "complete": true,
2026-06-22T02:04:44.2982591Z           "evidence": [
2026-06-22T02:04:44.2982688Z             {
2026-06-22T02:04:44.2982819Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2982929Z               "line": 470
2026-06-22T02:04:44.2983024Z             },
2026-06-22T02:04:44.2983112Z             {
2026-06-22T02:04:44.2983251Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.2983361Z               "line": 526
2026-06-22T02:04:44.2983575Z             }
2026-06-22T02:04:44.2983676Z           ]
2026-06-22T02:04:44.2983779Z         }
2026-06-22T02:04:44.2983875Z       }
2026-06-22T02:04:44.2983967Z     },
2026-06-22T02:04:44.2984067Z     {
2026-06-22T02:04:44.2984195Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-22T02:04:44.2988159Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-22T02:04:44.2988310Z       "requiredStages": [
2026-06-22T02:04:44.2988420Z         "impl",
2026-06-22T02:04:44.2988518Z         "unit",
2026-06-22T02:04:44.2988622Z         "int"
2026-06-22T02:04:44.2988728Z       ],
2026-06-22T02:04:44.2988833Z       "stages": {
2026-06-22T02:04:44.2988937Z         "doc": {
2026-06-22T02:04:44.2989110Z           "complete": false,
2026-06-22T02:04:44.2989242Z           "evidence": []
2026-06-22T02:04:44.2989338Z         },
2026-06-22T02:04:44.2989438Z         "impl": {
2026-06-22T02:04:44.2989543Z           "complete": true,
2026-06-22T02:04:44.2989648Z           "evidence": [
2026-06-22T02:04:44.2989748Z             {
2026-06-22T02:04:44.2989910Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.2990025Z               "line": 116
2026-06-22T02:04:44.2990125Z             },
2026-06-22T02:04:44.2990225Z             {
2026-06-22T02:04:44.2990373Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.2990482Z               "line": 132
2026-06-22T02:04:44.2990573Z             },
2026-06-22T02:04:44.2990665Z             {
2026-06-22T02:04:44.2990811Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.2990922Z               "line": 434
2026-06-22T02:04:44.2991027Z             },
2026-06-22T02:04:44.2991125Z             {
2026-06-22T02:04:44.2991273Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2991388Z               "line": 139
2026-06-22T02:04:44.2991491Z             },
2026-06-22T02:04:44.2991598Z             {
2026-06-22T02:04:44.2991736Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2991844Z               "line": 326
2026-06-22T02:04:44.2991941Z             },
2026-06-22T02:04:44.2992031Z             {
2026-06-22T02:04:44.2992174Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2992284Z               "line": 555
2026-06-22T02:04:44.2992379Z             }
2026-06-22T02:04:44.2992479Z           ]
2026-06-22T02:04:44.2992585Z         },
2026-06-22T02:04:44.2992689Z         "int": {
2026-06-22T02:04:44.2992803Z           "complete": true,
2026-06-22T02:04:44.2992914Z           "evidence": [
2026-06-22T02:04:44.2993013Z             {
2026-06-22T02:04:44.2993191Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T02:04:44.2993295Z               "line": 32
2026-06-22T02:04:44.2993503Z             }
2026-06-22T02:04:44.2993603Z           ]
2026-06-22T02:04:44.2993711Z         },
2026-06-22T02:04:44.2993811Z         "unit": {
2026-06-22T02:04:44.2993921Z           "complete": true,
2026-06-22T02:04:44.2994034Z           "evidence": [
2026-06-22T02:04:44.2994250Z             {
2026-06-22T02:04:44.2994402Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2994508Z               "line": 625
2026-06-22T02:04:44.2994613Z             },
2026-06-22T02:04:44.2994712Z             {
2026-06-22T02:04:44.2994847Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2994956Z               "line": 646
2026-06-22T02:04:44.2995051Z             },
2026-06-22T02:04:44.2995156Z             {
2026-06-22T02:04:44.2995294Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2995399Z               "line": 662
2026-06-22T02:04:44.2995500Z             },
2026-06-22T02:04:44.2995599Z             {
2026-06-22T02:04:44.2995753Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2995857Z               "line": 680
2026-06-22T02:04:44.2995956Z             },
2026-06-22T02:04:44.2996058Z             {
2026-06-22T02:04:44.2996200Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.2996318Z               "line": 704
2026-06-22T02:04:44.2996418Z             }
2026-06-22T02:04:44.2996517Z           ]
2026-06-22T02:04:44.2996616Z         }
2026-06-22T02:04:44.2996711Z       }
2026-06-22T02:04:44.2996807Z     },
2026-06-22T02:04:44.2996902Z     {
2026-06-22T02:04:44.2997031Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-22T02:04:44.2997212Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-22T02:04:44.2997332Z       "requiredStages": [
2026-06-22T02:04:44.2997432Z         "impl",
2026-06-22T02:04:44.2997540Z         "unit"
2026-06-22T02:04:44.2997641Z       ],
2026-06-22T02:04:44.2997747Z       "stages": {
2026-06-22T02:04:44.2997860Z         "doc": {
2026-06-22T02:04:44.2997976Z           "complete": false,
2026-06-22T02:04:44.2998075Z           "evidence": []
2026-06-22T02:04:44.2998175Z         },
2026-06-22T02:04:44.2998281Z         "impl": {
2026-06-22T02:04:44.2998390Z           "complete": true,
2026-06-22T02:04:44.2998499Z           "evidence": [
2026-06-22T02:04:44.2998601Z             {
2026-06-22T02:04:44.2998743Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.2998851Z               "line": 35
2026-06-22T02:04:44.2999009Z             }
2026-06-22T02:04:44.2999116Z           ]
2026-06-22T02:04:44.2999215Z         },
2026-06-22T02:04:44.2999321Z         "int": {
2026-06-22T02:04:44.2999435Z           "complete": false,
2026-06-22T02:04:44.2999545Z           "evidence": []
2026-06-22T02:04:44.2999646Z         },
2026-06-22T02:04:44.2999746Z         "unit": {
2026-06-22T02:04:44.2999859Z           "complete": true,
2026-06-22T02:04:44.2999961Z           "evidence": [
2026-06-22T02:04:44.3000069Z             {
2026-06-22T02:04:44.3000213Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:04:44.3000318Z               "line": 220
2026-06-22T02:04:44.3000422Z             }
2026-06-22T02:04:44.3000523Z           ]
2026-06-22T02:04:44.3000628Z         }
2026-06-22T02:04:44.3000723Z       }
2026-06-22T02:04:44.3000823Z     },
2026-06-22T02:04:44.3000924Z     {
2026-06-22T02:04:44.3001057Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-22T02:04:44.3004210Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-22T02:04:44.3004548Z       "requiredStages": [
2026-06-22T02:04:44.3004652Z         "impl",
2026-06-22T02:04:44.3004753Z         "unit",
2026-06-22T02:04:44.3004862Z         "int"
2026-06-22T02:04:44.3004962Z       ],
2026-06-22T02:04:44.3005058Z       "stages": {
2026-06-22T02:04:44.3005158Z         "doc": {
2026-06-22T02:04:44.3005276Z           "complete": false,
2026-06-22T02:04:44.3005378Z           "evidence": []
2026-06-22T02:04:44.3005487Z         },
2026-06-22T02:04:44.3005591Z         "impl": {
2026-06-22T02:04:44.3005707Z           "complete": true,
2026-06-22T02:04:44.3005816Z           "evidence": [
2026-06-22T02:04:44.3005911Z             {
2026-06-22T02:04:44.3006065Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3006169Z               "line": 202
2026-06-22T02:04:44.3006274Z             },
2026-06-22T02:04:44.3006375Z             {
2026-06-22T02:04:44.3006521Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:04:44.3006633Z               "line": 107
2026-06-22T02:04:44.3006737Z             },
2026-06-22T02:04:44.3006835Z             {
2026-06-22T02:04:44.3006968Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:04:44.3007077Z               "line": 138
2026-06-22T02:04:44.3007176Z             },
2026-06-22T02:04:44.3007276Z             {
2026-06-22T02:04:44.3007425Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3007534Z               "line": 209
2026-06-22T02:04:44.3007635Z             },
2026-06-22T02:04:44.3007730Z             {
2026-06-22T02:04:44.3007877Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3007983Z               "line": 246
2026-06-22T02:04:44.3008082Z             },
2026-06-22T02:04:44.3008192Z             {
2026-06-22T02:04:44.3008335Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3008444Z               "line": 379
2026-06-22T02:04:44.3008546Z             }
2026-06-22T02:04:44.3008650Z           ]
2026-06-22T02:04:44.3008754Z         },
2026-06-22T02:04:44.3008856Z         "int": {
2026-06-22T02:04:44.3009064Z           "complete": true,
2026-06-22T02:04:44.3009166Z           "evidence": [
2026-06-22T02:04:44.3009270Z             {
2026-06-22T02:04:44.3009435Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-22T02:04:44.3009545Z               "line": 17
2026-06-22T02:04:44.3009648Z             }
2026-06-22T02:04:44.3009757Z           ]
2026-06-22T02:04:44.3009858Z         },
2026-06-22T02:04:44.3009963Z         "unit": {
2026-06-22T02:04:44.3010076Z           "complete": true,
2026-06-22T02:04:44.3010188Z           "evidence": [
2026-06-22T02:04:44.3010282Z             {
2026-06-22T02:04:44.3010434Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.3010544Z               "line": 982
2026-06-22T02:04:44.3010644Z             }
2026-06-22T02:04:44.3010744Z           ]
2026-06-22T02:04:44.3010850Z         }
2026-06-22T02:04:44.3010949Z       }
2026-06-22T02:04:44.3011049Z     },
2026-06-22T02:04:44.3011156Z     {
2026-06-22T02:04:44.3011283Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-22T02:04:44.3011573Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-22T02:04:44.3011684Z       "requiredStages": [
2026-06-22T02:04:44.3011790Z         "impl",
2026-06-22T02:04:44.3011883Z         "unit"
2026-06-22T02:04:44.3011989Z       ],
2026-06-22T02:04:44.3012193Z       "stages": {
2026-06-22T02:04:44.3012293Z         "doc": {
2026-06-22T02:04:44.3012408Z           "complete": false,
2026-06-22T02:04:44.3012518Z           "evidence": []
2026-06-22T02:04:44.3012622Z         },
2026-06-22T02:04:44.3012727Z         "impl": {
2026-06-22T02:04:44.3012946Z           "complete": true,
2026-06-22T02:04:44.3013057Z           "evidence": [
2026-06-22T02:04:44.3013152Z             {
2026-06-22T02:04:44.3013309Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.3013409Z               "line": 405
2026-06-22T02:04:44.3013509Z             },
2026-06-22T02:04:44.3013608Z             {
2026-06-22T02:04:44.3013762Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3013871Z               "line": 409
2026-06-22T02:04:44.3013967Z             },
2026-06-22T02:04:44.3014067Z             {
2026-06-22T02:04:44.3014210Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.3014326Z               "line": 156
2026-06-22T02:04:44.3014429Z             }
2026-06-22T02:04:44.3014528Z           ]
2026-06-22T02:04:44.3014633Z         },
2026-06-22T02:04:44.3014728Z         "int": {
2026-06-22T02:04:44.3014845Z           "complete": false,
2026-06-22T02:04:44.3014950Z           "evidence": []
2026-06-22T02:04:44.3015051Z         },
2026-06-22T02:04:44.3015160Z         "unit": {
2026-06-22T02:04:44.3015275Z           "complete": true,
2026-06-22T02:04:44.3015389Z           "evidence": [
2026-06-22T02:04:44.3015493Z             {
2026-06-22T02:04:44.3015638Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3015747Z               "line": 865
2026-06-22T02:04:44.3015851Z             },
2026-06-22T02:04:44.3015957Z             {
2026-06-22T02:04:44.3016104Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3016214Z               "line": 879
2026-06-22T02:04:44.3016319Z             },
2026-06-22T02:04:44.3016424Z             {
2026-06-22T02:04:44.3016563Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3016667Z               "line": 898
2026-06-22T02:04:44.3016758Z             },
2026-06-22T02:04:44.3016854Z             {
2026-06-22T02:04:44.3016991Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3017100Z               "line": 915
2026-06-22T02:04:44.3017202Z             },
2026-06-22T02:04:44.3017306Z             {
2026-06-22T02:04:44.3017457Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:04:44.3017576Z               "line": 441
2026-06-22T02:04:44.3017679Z             }
2026-06-22T02:04:44.3017784Z           ]
2026-06-22T02:04:44.3017885Z         }
2026-06-22T02:04:44.3017989Z       }
2026-06-22T02:04:44.3018089Z     },
2026-06-22T02:04:44.3018185Z     {
2026-06-22T02:04:44.3018318Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-22T02:04:44.3028103Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-22T02:04:44.3028512Z       "requiredStages": [
2026-06-22T02:04:44.3028615Z         "doc",
2026-06-22T02:04:44.3028722Z         "impl",
2026-06-22T02:04:44.3028826Z         "unit",
2026-06-22T02:04:44.3028930Z         "int"
2026-06-22T02:04:44.3029122Z       ],
2026-06-22T02:04:44.3029217Z       "stages": {
2026-06-22T02:04:44.3029317Z         "doc": {
2026-06-22T02:04:44.3029423Z           "complete": true,
2026-06-22T02:04:44.3029532Z           "evidence": [
2026-06-22T02:04:44.3029632Z             {
2026-06-22T02:04:44.3029752Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3029861Z               "line": 420
2026-06-22T02:04:44.3029961Z             },
2026-06-22T02:04:44.3030067Z             {
2026-06-22T02:04:44.3030199Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3030315Z               "line": 402
2026-06-22T02:04:44.3030424Z             }
2026-06-22T02:04:44.3030513Z           ]
2026-06-22T02:04:44.3030608Z         },
2026-06-22T02:04:44.3030699Z         "impl": {
2026-06-22T02:04:44.3030815Z           "complete": true,
2026-06-22T02:04:44.3030920Z           "evidence": [
2026-06-22T02:04:44.3031026Z             {
2026-06-22T02:04:44.3031177Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3031288Z               "line": 797
2026-06-22T02:04:44.3031398Z             },
2026-06-22T02:04:44.3031497Z             {
2026-06-22T02:04:44.3031646Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3031760Z               "line": 822
2026-06-22T02:04:44.3031860Z             },
2026-06-22T02:04:44.3031966Z             {
2026-06-22T02:04:44.3032094Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3032193Z               "line": 839
2026-06-22T02:04:44.3032295Z             },
2026-06-22T02:04:44.3032394Z             {
2026-06-22T02:04:44.3032528Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3032633Z               "line": 854
2026-06-22T02:04:44.3032733Z             },
2026-06-22T02:04:44.3032939Z             {
2026-06-22T02:04:44.3033085Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3033187Z               "line": 874
2026-06-22T02:04:44.3033286Z             },
2026-06-22T02:04:44.3033394Z             {
2026-06-22T02:04:44.3033533Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3033756Z               "line": 964
2026-06-22T02:04:44.3033857Z             },
2026-06-22T02:04:44.3033967Z             {
2026-06-22T02:04:44.3034109Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3034224Z               "line": 1016
2026-06-22T02:04:44.3034338Z             },
2026-06-22T02:04:44.3034434Z             {
2026-06-22T02:04:44.3034572Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3034681Z               "line": 1075
2026-06-22T02:04:44.3034787Z             },
2026-06-22T02:04:44.3034887Z             {
2026-06-22T02:04:44.3035034Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.3035164Z               "line": 527
2026-06-22T02:04:44.3035263Z             }
2026-06-22T02:04:44.3035368Z           ]
2026-06-22T02:04:44.3035470Z         },
2026-06-22T02:04:44.3035568Z         "int": {
2026-06-22T02:04:44.3035672Z           "complete": true,
2026-06-22T02:04:44.3035801Z           "evidence": [
2026-06-22T02:04:44.3035904Z             {
2026-06-22T02:04:44.3036051Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:04:44.3036162Z               "line": 35
2026-06-22T02:04:44.3036266Z             },
2026-06-22T02:04:44.3036376Z             {
2026-06-22T02:04:44.3036519Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:04:44.3036628Z               "line": 569
2026-06-22T02:04:44.3036730Z             },
2026-06-22T02:04:44.3036829Z             {
2026-06-22T02:04:44.3036962Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:04:44.3037063Z               "line": 590
2026-06-22T02:04:44.3037172Z             }
2026-06-22T02:04:44.3037272Z           ]
2026-06-22T02:04:44.3037373Z         },
2026-06-22T02:04:44.3037477Z         "unit": {
2026-06-22T02:04:44.3037587Z           "complete": true,
2026-06-22T02:04:44.3037703Z           "evidence": [
2026-06-22T02:04:44.3037806Z             {
2026-06-22T02:04:44.3037955Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3038055Z               "line": 1202
2026-06-22T02:04:44.3038154Z             },
2026-06-22T02:04:44.3038260Z             {
2026-06-22T02:04:44.3038389Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3038502Z               "line": 1246
2026-06-22T02:04:44.3038601Z             },
2026-06-22T02:04:44.3038701Z             {
2026-06-22T02:04:44.3038837Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3039010Z               "line": 1260
2026-06-22T02:04:44.3039114Z             },
2026-06-22T02:04:44.3039214Z             {
2026-06-22T02:04:44.3039358Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3039467Z               "line": 1278
2026-06-22T02:04:44.3039567Z             },
2026-06-22T02:04:44.3039668Z             {
2026-06-22T02:04:44.3039805Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3039911Z               "line": 1302
2026-06-22T02:04:44.3040015Z             },
2026-06-22T02:04:44.3040120Z             {
2026-06-22T02:04:44.3040269Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3040378Z               "line": 1529
2026-06-22T02:04:44.3040473Z             }
2026-06-22T02:04:44.3040579Z           ]
2026-06-22T02:04:44.3040683Z         }
2026-06-22T02:04:44.3040783Z       }
2026-06-22T02:04:44.3040885Z     },
2026-06-22T02:04:44.3040974Z     {
2026-06-22T02:04:44.3041106Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-22T02:04:44.3043312Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-22T02:04:44.3043627Z       "requiredStages": [
2026-06-22T02:04:44.3043733Z         "unit",
2026-06-22T02:04:44.3043837Z         "int"
2026-06-22T02:04:44.3043935Z       ],
2026-06-22T02:04:44.3044045Z       "stages": {
2026-06-22T02:04:44.3044145Z         "doc": {
2026-06-22T02:04:44.3044259Z           "complete": true,
2026-06-22T02:04:44.3044359Z           "evidence": [
2026-06-22T02:04:44.3044474Z             {
2026-06-22T02:04:44.3044612Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3044713Z               "line": 381
2026-06-22T02:04:44.3044817Z             }
2026-06-22T02:04:44.3044917Z           ]
2026-06-22T02:04:44.3045013Z         },
2026-06-22T02:04:44.3045118Z         "impl": {
2026-06-22T02:04:44.3045241Z           "complete": true,
2026-06-22T02:04:44.3045352Z           "evidence": [
2026-06-22T02:04:44.3045452Z             {
2026-06-22T02:04:44.3045594Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3045701Z               "line": 100
2026-06-22T02:04:44.3045804Z             }
2026-06-22T02:04:44.3045904Z           ]
2026-06-22T02:04:44.3046011Z         },
2026-06-22T02:04:44.3046119Z         "int": {
2026-06-22T02:04:44.3046227Z           "complete": true,
2026-06-22T02:04:44.3046347Z           "evidence": [
2026-06-22T02:04:44.3046445Z             {
2026-06-22T02:04:44.3046602Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3046717Z               "line": 1045
2026-06-22T02:04:44.3046821Z             }
2026-06-22T02:04:44.3046926Z           ]
2026-06-22T02:04:44.3047022Z         },
2026-06-22T02:04:44.3047126Z         "unit": {
2026-06-22T02:04:44.3047231Z           "complete": true,
2026-06-22T02:04:44.3047351Z           "evidence": [
2026-06-22T02:04:44.3047450Z             {
2026-06-22T02:04:44.3047590Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3047704Z               "line": 2270
2026-06-22T02:04:44.3047803Z             }
2026-06-22T02:04:44.3047904Z           ]
2026-06-22T02:04:44.3047999Z         }
2026-06-22T02:04:44.3048104Z       }
2026-06-22T02:04:44.3048205Z     },
2026-06-22T02:04:44.3048309Z     {
2026-06-22T02:04:44.3048457Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-22T02:04:44.3052724Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-22T02:04:44.3052999Z       "requiredStages": [
2026-06-22T02:04:44.3053200Z         "doc",
2026-06-22T02:04:44.3053300Z         "impl",
2026-06-22T02:04:44.3053396Z         "unit",
2026-06-22T02:04:44.3053500Z         "int"
2026-06-22T02:04:44.3053600Z       ],
2026-06-22T02:04:44.3053706Z       "stages": {
2026-06-22T02:04:44.3053805Z         "doc": {
2026-06-22T02:04:44.3053919Z           "complete": true,
2026-06-22T02:04:44.3054016Z           "evidence": [
2026-06-22T02:04:44.3054119Z             {
2026-06-22T02:04:44.3054244Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3054350Z               "line": 342
2026-06-22T02:04:44.3054448Z             }
2026-06-22T02:04:44.3054547Z           ]
2026-06-22T02:04:44.3054653Z         },
2026-06-22T02:04:44.3054787Z         "impl": {
2026-06-22T02:04:44.3054914Z           "complete": true,
2026-06-22T02:04:44.3055026Z           "evidence": [
2026-06-22T02:04:44.3055125Z             {
2026-06-22T02:04:44.3055278Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3055382Z               "line": 333
2026-06-22T02:04:44.3055491Z             },
2026-06-22T02:04:44.3055588Z             {
2026-06-22T02:04:44.3055735Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.3055849Z               "line": 892
2026-06-22T02:04:44.3055951Z             }
2026-06-22T02:04:44.3056049Z           ]
2026-06-22T02:04:44.3056150Z         },
2026-06-22T02:04:44.3056256Z         "int": {
2026-06-22T02:04:44.3056369Z           "complete": true,
2026-06-22T02:04:44.3056484Z           "evidence": [
2026-06-22T02:04:44.3056590Z             {
2026-06-22T02:04:44.3056759Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3056869Z               "line": 787
2026-06-22T02:04:44.3056978Z             },
2026-06-22T02:04:44.3057076Z             {
2026-06-22T02:04:44.3057249Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3057358Z               "line": 2074
2026-06-22T02:04:44.3057462Z             }
2026-06-22T02:04:44.3057568Z           ]
2026-06-22T02:04:44.3057668Z         },
2026-06-22T02:04:44.3057772Z         "unit": {
2026-06-22T02:04:44.3057888Z           "complete": true,
2026-06-22T02:04:44.3057988Z           "evidence": [
2026-06-22T02:04:44.3058087Z             {
2026-06-22T02:04:44.3058235Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.3058344Z               "line": 1682
2026-06-22T02:04:44.3058450Z             }
2026-06-22T02:04:44.3058555Z           ]
2026-06-22T02:04:44.3058664Z         }
2026-06-22T02:04:44.3058770Z       }
2026-06-22T02:04:44.3058856Z     },
2026-06-22T02:04:44.3059046Z     {
2026-06-22T02:04:44.3059245Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-22T02:04:44.3064567Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-22T02:04:44.3064957Z       "requiredStages": [
2026-06-22T02:04:44.3065065Z         "impl",
2026-06-22T02:04:44.3065174Z         "unit",
2026-06-22T02:04:44.3065280Z         "int"
2026-06-22T02:04:44.3065385Z       ],
2026-06-22T02:04:44.3065494Z       "stages": {
2026-06-22T02:04:44.3065595Z         "doc": {
2026-06-22T02:04:44.3065709Z           "complete": false,
2026-06-22T02:04:44.3065814Z           "evidence": []
2026-06-22T02:04:44.3065919Z         },
2026-06-22T02:04:44.3066028Z         "impl": {
2026-06-22T02:04:44.3066133Z           "complete": true,
2026-06-22T02:04:44.3066243Z           "evidence": [
2026-06-22T02:04:44.3066338Z             {
2026-06-22T02:04:44.3066496Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3066596Z               "line": 322
2026-06-22T02:04:44.3066700Z             },
2026-06-22T02:04:44.3066802Z             {
2026-06-22T02:04:44.3066948Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3067063Z               "line": 744
2026-06-22T02:04:44.3067160Z             }
2026-06-22T02:04:44.3067258Z           ]
2026-06-22T02:04:44.3067348Z         },
2026-06-22T02:04:44.3067467Z         "int": {
2026-06-22T02:04:44.3067580Z           "complete": true,
2026-06-22T02:04:44.3067693Z           "evidence": [
2026-06-22T02:04:44.3067794Z             {
2026-06-22T02:04:44.3067960Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3068071Z               "line": 786
2026-06-22T02:04:44.3068180Z             }
2026-06-22T02:04:44.3068284Z           ]
2026-06-22T02:04:44.3068376Z         },
2026-06-22T02:04:44.3068481Z         "unit": {
2026-06-22T02:04:44.3068585Z           "complete": true,
2026-06-22T02:04:44.3068696Z           "evidence": [
2026-06-22T02:04:44.3068805Z             {
2026-06-22T02:04:44.3069025Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3069125Z               "line": 2485
2026-06-22T02:04:44.3069229Z             },
2026-06-22T02:04:44.3069335Z             {
2026-06-22T02:04:44.3069481Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3069586Z               "line": 2554
2026-06-22T02:04:44.3069693Z             }
2026-06-22T02:04:44.3069792Z           ]
2026-06-22T02:04:44.3069892Z         }
2026-06-22T02:04:44.3069993Z       }
2026-06-22T02:04:44.3070097Z     },
2026-06-22T02:04:44.3070201Z     {
2026-06-22T02:04:44.3070334Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-22T02:04:44.3071166Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-22T02:04:44.3071282Z       "requiredStages": [
2026-06-22T02:04:44.3071386Z         "doc",
2026-06-22T02:04:44.3071500Z         "impl",
2026-06-22T02:04:44.3071596Z         "unit"
2026-06-22T02:04:44.3071705Z       ],
2026-06-22T02:04:44.3071800Z       "stages": {
2026-06-22T02:04:44.3071906Z         "doc": {
2026-06-22T02:04:44.3072006Z           "complete": true,
2026-06-22T02:04:44.3072120Z           "evidence": [
2026-06-22T02:04:44.3072358Z             {
2026-06-22T02:04:44.3072492Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3072603Z               "line": 366
2026-06-22T02:04:44.3072706Z             }
2026-06-22T02:04:44.3072810Z           ]
2026-06-22T02:04:44.3072906Z         },
2026-06-22T02:04:44.3073233Z         "impl": {
2026-06-22T02:04:44.3073342Z           "complete": true,
2026-06-22T02:04:44.3073451Z           "evidence": [
2026-06-22T02:04:44.3073557Z             {
2026-06-22T02:04:44.3073690Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.3076765Z               "line": 87
2026-06-22T02:04:44.3076894Z             },
2026-06-22T02:04:44.3076999Z             {
2026-06-22T02:04:44.3077161Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3077279Z               "line": 203
2026-06-22T02:04:44.3077385Z             },
2026-06-22T02:04:44.3077485Z             {
2026-06-22T02:04:44.3077638Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3077767Z               "line": 55
2026-06-22T02:04:44.3077870Z             },
2026-06-22T02:04:44.3077975Z             {
2026-06-22T02:04:44.3078117Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.3078225Z               "line": 31
2026-06-22T02:04:44.3078321Z             },
2026-06-22T02:04:44.3078427Z             {
2026-06-22T02:04:44.3078568Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.3078674Z               "line": 446
2026-06-22T02:04:44.3078783Z             },
2026-06-22T02:04:44.3078868Z             {
2026-06-22T02:04:44.3079103Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3079212Z               "line": 95
2026-06-22T02:04:44.3079323Z             },
2026-06-22T02:04:44.3079413Z             {
2026-06-22T02:04:44.3079555Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.3079661Z               "line": 29
2026-06-22T02:04:44.3079756Z             },
2026-06-22T02:04:44.3079851Z             {
2026-06-22T02:04:44.3079990Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.3080100Z               "line": 104
2026-06-22T02:04:44.3080190Z             },
2026-06-22T02:04:44.3080296Z             {
2026-06-22T02:04:44.3080452Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3080563Z               "line": 208
2026-06-22T02:04:44.3080667Z             },
2026-06-22T02:04:44.3080766Z             {
2026-06-22T02:04:44.3080904Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:04:44.3081007Z               "line": 28
2026-06-22T02:04:44.3081111Z             },
2026-06-22T02:04:44.3081212Z             {
2026-06-22T02:04:44.3081346Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:04:44.3081455Z               "line": 74
2026-06-22T02:04:44.3081551Z             },
2026-06-22T02:04:44.3081656Z             {
2026-06-22T02:04:44.3081808Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:04:44.3081918Z               "line": 32
2026-06-22T02:04:44.3082022Z             },
2026-06-22T02:04:44.3082122Z             {
2026-06-22T02:04:44.3082260Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3082365Z               "line": 40
2026-06-22T02:04:44.3082471Z             },
2026-06-22T02:04:44.3082571Z             {
2026-06-22T02:04:44.3082704Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3082815Z               "line": 184
2026-06-22T02:04:44.3082909Z             },
2026-06-22T02:04:44.3083014Z             {
2026-06-22T02:04:44.3083149Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3083261Z               "line": 61
2026-06-22T02:04:44.3083356Z             },
2026-06-22T02:04:44.3083442Z             {
2026-06-22T02:04:44.3083578Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3083687Z               "line": 131
2026-06-22T02:04:44.3083945Z             },
2026-06-22T02:04:44.3084045Z             {
2026-06-22T02:04:44.3084189Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3084303Z               "line": 223
2026-06-22T02:04:44.3084404Z             },
2026-06-22T02:04:44.3084503Z             {
2026-06-22T02:04:44.3084743Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:04:44.3084856Z               "line": 37
2026-06-22T02:04:44.3084956Z             },
2026-06-22T02:04:44.3085062Z             {
2026-06-22T02:04:44.3085209Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.3085304Z               "line": 38
2026-06-22T02:04:44.3085405Z             },
2026-06-22T02:04:44.3085514Z             {
2026-06-22T02:04:44.3085658Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:04:44.3085762Z               "line": 36
2026-06-22T02:04:44.3085872Z             },
2026-06-22T02:04:44.3085977Z             {
2026-06-22T02:04:44.3086119Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:04:44.3086237Z               "line": 40
2026-06-22T02:04:44.3086338Z             }
2026-06-22T02:04:44.3086439Z           ]
2026-06-22T02:04:44.3086538Z         },
2026-06-22T02:04:44.3086639Z         "int": {
2026-06-22T02:04:44.3086758Z           "complete": false,
2026-06-22T02:04:44.3086867Z           "evidence": []
2026-06-22T02:04:44.3086969Z         },
2026-06-22T02:04:44.3087073Z         "unit": {
2026-06-22T02:04:44.3087196Z           "complete": true,
2026-06-22T02:04:44.3087293Z           "evidence": [
2026-06-22T02:04:44.3087392Z             {
2026-06-22T02:04:44.3087544Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3087654Z               "line": 212
2026-06-22T02:04:44.3087759Z             },
2026-06-22T02:04:44.3087859Z             {
2026-06-22T02:04:44.3088012Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T02:04:44.3088116Z               "line": 136
2026-06-22T02:04:44.3088232Z             },
2026-06-22T02:04:44.3088336Z             {
2026-06-22T02:04:44.3088487Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:04:44.3088597Z               "line": 685
2026-06-22T02:04:44.3088695Z             },
2026-06-22T02:04:44.3088799Z             {
2026-06-22T02:04:44.3089029Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:04:44.3089153Z               "line": 224
2026-06-22T02:04:44.3089254Z             },
2026-06-22T02:04:44.3089343Z             {
2026-06-22T02:04:44.3089491Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:04:44.3089601Z               "line": 206
2026-06-22T02:04:44.3089701Z             },
2026-06-22T02:04:44.3089801Z             {
2026-06-22T02:04:44.3089945Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:04:44.3090058Z               "line": 112
2026-06-22T02:04:44.3090155Z             },
2026-06-22T02:04:44.3090249Z             {
2026-06-22T02:04:44.3090382Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:04:44.3090498Z               "line": 157
2026-06-22T02:04:44.3090602Z             },
2026-06-22T02:04:44.3090702Z             {
2026-06-22T02:04:44.3090846Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.3090950Z               "line": 215
2026-06-22T02:04:44.3091056Z             },
2026-06-22T02:04:44.3091161Z             {
2026-06-22T02:04:44.3091302Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:04:44.3091412Z               "line": 141
2026-06-22T02:04:44.3091511Z             },
2026-06-22T02:04:44.3091610Z             {
2026-06-22T02:04:44.3091743Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:04:44.3091848Z               "line": 162
2026-06-22T02:04:44.3091948Z             }
2026-06-22T02:04:44.3092053Z           ]
2026-06-22T02:04:44.3092159Z         }
2026-06-22T02:04:44.3092263Z       }
2026-06-22T02:04:44.3092363Z     },
2026-06-22T02:04:44.3092464Z     {
2026-06-22T02:04:44.3092712Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-22T02:04:44.3094625Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-22T02:04:44.3094848Z       "requiredStages": [
2026-06-22T02:04:44.3094954Z         "doc",
2026-06-22T02:04:44.3095059Z         "impl",
2026-06-22T02:04:44.3095168Z         "unit",
2026-06-22T02:04:44.3095274Z         "int"
2026-06-22T02:04:44.3095373Z       ],
2026-06-22T02:04:44.3095492Z       "stages": {
2026-06-22T02:04:44.3095598Z         "doc": {
2026-06-22T02:04:44.3095721Z           "complete": true,
2026-06-22T02:04:44.3095821Z           "evidence": [
2026-06-22T02:04:44.3095932Z             {
2026-06-22T02:04:44.3096069Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3096189Z               "line": 250
2026-06-22T02:04:44.3096295Z             }
2026-06-22T02:04:44.3096388Z           ]
2026-06-22T02:04:44.3096494Z         },
2026-06-22T02:04:44.3096595Z         "impl": {
2026-06-22T02:04:44.3096707Z           "complete": true,
2026-06-22T02:04:44.3096821Z           "evidence": [
2026-06-22T02:04:44.3096913Z             {
2026-06-22T02:04:44.3097060Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:04:44.3097160Z               "line": 135
2026-06-22T02:04:44.3097266Z             },
2026-06-22T02:04:44.3097365Z             {
2026-06-22T02:04:44.3097504Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:04:44.3097614Z               "line": 157
2026-06-22T02:04:44.3097718Z             }
2026-06-22T02:04:44.3097819Z           ]
2026-06-22T02:04:44.3097919Z         },
2026-06-22T02:04:44.3098028Z         "int": {
2026-06-22T02:04:44.3098134Z           "complete": true,
2026-06-22T02:04:44.3098238Z           "evidence": [
2026-06-22T02:04:44.3098343Z             {
2026-06-22T02:04:44.3098497Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-22T02:04:44.3098600Z               "line": 15
2026-06-22T02:04:44.3098691Z             }
2026-06-22T02:04:44.3098797Z           ]
2026-06-22T02:04:44.3098896Z         },
2026-06-22T02:04:44.3099081Z         "unit": {
2026-06-22T02:04:44.3099190Z           "complete": true,
2026-06-22T02:04:44.3099289Z           "evidence": [
2026-06-22T02:04:44.3099393Z             {
2026-06-22T02:04:44.3099537Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-22T02:04:44.3099650Z               "line": 233
2026-06-22T02:04:44.3099751Z             }
2026-06-22T02:04:44.3099856Z           ]
2026-06-22T02:04:44.3099961Z         }
2026-06-22T02:04:44.3100061Z       }
2026-06-22T02:04:44.3100161Z     },
2026-06-22T02:04:44.3100256Z     {
2026-06-22T02:04:44.3100401Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-22T02:04:44.3100576Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-22T02:04:44.3100700Z       "requiredStages": [
2026-06-22T02:04:44.3100809Z         "impl",
2026-06-22T02:04:44.3100910Z         "unit"
2026-06-22T02:04:44.3101015Z       ],
2026-06-22T02:04:44.3101120Z       "stages": {
2026-06-22T02:04:44.3101225Z         "doc": {
2026-06-22T02:04:44.3101330Z           "complete": false,
2026-06-22T02:04:44.3101439Z           "evidence": []
2026-06-22T02:04:44.3101544Z         },
2026-06-22T02:04:44.3101649Z         "impl": {
2026-06-22T02:04:44.3101764Z           "complete": true,
2026-06-22T02:04:44.3101867Z           "evidence": [
2026-06-22T02:04:44.3101972Z             {
2026-06-22T02:04:44.3102113Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3102323Z               "line": 95
2026-06-22T02:04:44.3102433Z             },
2026-06-22T02:04:44.3102531Z             {
2026-06-22T02:04:44.3102676Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3102785Z               "line": 117
2026-06-22T02:04:44.3102991Z             }
2026-06-22T02:04:44.3103081Z           ]
2026-06-22T02:04:44.3103185Z         },
2026-06-22T02:04:44.3103282Z         "int": {
2026-06-22T02:04:44.3103391Z           "complete": false,
2026-06-22T02:04:44.3103495Z           "evidence": []
2026-06-22T02:04:44.3103592Z         },
2026-06-22T02:04:44.3103701Z         "unit": {
2026-06-22T02:04:44.3103805Z           "complete": true,
2026-06-22T02:04:44.3103912Z           "evidence": [
2026-06-22T02:04:44.3104020Z             {
2026-06-22T02:04:44.3104153Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3104259Z               "line": 250
2026-06-22T02:04:44.3104363Z             },
2026-06-22T02:04:44.3104462Z             {
2026-06-22T02:04:44.3104591Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.3104699Z               "line": 412
2026-06-22T02:04:44.3104808Z             },
2026-06-22T02:04:44.3104894Z             {
2026-06-22T02:04:44.3105033Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3105146Z               "line": 611
2026-06-22T02:04:44.3105248Z             },
2026-06-22T02:04:44.3105352Z             {
2026-06-22T02:04:44.3105490Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3105591Z               "line": 669
2026-06-22T02:04:44.3105690Z             }
2026-06-22T02:04:44.3105790Z           ]
2026-06-22T02:04:44.3105891Z         }
2026-06-22T02:04:44.3105996Z       }
2026-06-22T02:04:44.3106091Z     },
2026-06-22T02:04:44.3106192Z     {
2026-06-22T02:04:44.3106330Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-22T02:04:44.3108789Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-22T02:04:44.3108927Z       "requiredStages": [
2026-06-22T02:04:44.3112023Z         "impl",
2026-06-22T02:04:44.3112118Z         "unit",
2026-06-22T02:04:44.3112234Z         "int"
2026-06-22T02:04:44.3112328Z       ],
2026-06-22T02:04:44.3112446Z       "stages": {
2026-06-22T02:04:44.3112546Z         "doc": {
2026-06-22T02:04:44.3112669Z           "complete": false,
2026-06-22T02:04:44.3112782Z           "evidence": []
2026-06-22T02:04:44.3112883Z         },
2026-06-22T02:04:44.3112988Z         "impl": {
2026-06-22T02:04:44.3113097Z           "complete": true,
2026-06-22T02:04:44.3113222Z           "evidence": [
2026-06-22T02:04:44.3113322Z             {
2026-06-22T02:04:44.3113464Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3113589Z               "line": 925
2026-06-22T02:04:44.3113688Z             },
2026-06-22T02:04:44.3113784Z             {
2026-06-22T02:04:44.3113927Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3114032Z               "line": 994
2026-06-22T02:04:44.3114127Z             }
2026-06-22T02:04:44.3114228Z           ]
2026-06-22T02:04:44.3114327Z         },
2026-06-22T02:04:44.3114428Z         "int": {
2026-06-22T02:04:44.3114533Z           "complete": true,
2026-06-22T02:04:44.3114767Z           "evidence": [
2026-06-22T02:04:44.3114919Z             {
2026-06-22T02:04:44.3115070Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:04:44.3115180Z               "line": 187
2026-06-22T02:04:44.3115283Z             },
2026-06-22T02:04:44.3115382Z             {
2026-06-22T02:04:44.3115630Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:04:44.3115735Z               "line": 348
2026-06-22T02:04:44.3115841Z             }
2026-06-22T02:04:44.3115945Z           ]
2026-06-22T02:04:44.3116040Z         },
2026-06-22T02:04:44.3116151Z         "unit": {
2026-06-22T02:04:44.3116260Z           "complete": true,
2026-06-22T02:04:44.3116370Z           "evidence": [
2026-06-22T02:04:44.3116461Z             {
2026-06-22T02:04:44.3116603Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3116714Z               "line": 1206
2026-06-22T02:04:44.3116814Z             },
2026-06-22T02:04:44.3116913Z             {
2026-06-22T02:04:44.3117052Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3117166Z               "line": 8116
2026-06-22T02:04:44.3117266Z             }
2026-06-22T02:04:44.3117372Z           ]
2026-06-22T02:04:44.3117471Z         }
2026-06-22T02:04:44.3117562Z       }
2026-06-22T02:04:44.3117663Z     },
2026-06-22T02:04:44.3117767Z     {
2026-06-22T02:04:44.3117894Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-22T02:04:44.3118101Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-22T02:04:44.3118213Z       "requiredStages": [
2026-06-22T02:04:44.3118319Z         "impl",
2026-06-22T02:04:44.3118419Z         "unit"
2026-06-22T02:04:44.3118518Z       ],
2026-06-22T02:04:44.3118620Z       "stages": {
2026-06-22T02:04:44.3118724Z         "doc": {
2026-06-22T02:04:44.3118833Z           "complete": false,
2026-06-22T02:04:44.3119006Z           "evidence": []
2026-06-22T02:04:44.3119101Z         },
2026-06-22T02:04:44.3119206Z         "impl": {
2026-06-22T02:04:44.3119331Z           "complete": true,
2026-06-22T02:04:44.3119440Z           "evidence": [
2026-06-22T02:04:44.3119554Z             {
2026-06-22T02:04:44.3119692Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3119811Z               "line": 262
2026-06-22T02:04:44.3119917Z             },
2026-06-22T02:04:44.3120021Z             {
2026-06-22T02:04:44.3120148Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3120254Z               "line": 307
2026-06-22T02:04:44.3120357Z             },
2026-06-22T02:04:44.3120452Z             {
2026-06-22T02:04:44.3120581Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3120681Z               "line": 319
2026-06-22T02:04:44.3120785Z             }
2026-06-22T02:04:44.3120890Z           ]
2026-06-22T02:04:44.3120996Z         },
2026-06-22T02:04:44.3121105Z         "int": {
2026-06-22T02:04:44.3121216Z           "complete": false,
2026-06-22T02:04:44.3121334Z           "evidence": []
2026-06-22T02:04:44.3121438Z         },
2026-06-22T02:04:44.3121545Z         "unit": {
2026-06-22T02:04:44.3121654Z           "complete": true,
2026-06-22T02:04:44.3121763Z           "evidence": [
2026-06-22T02:04:44.3121869Z             {
2026-06-22T02:04:44.3121992Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3122101Z               "line": 455
2026-06-22T02:04:44.3122203Z             },
2026-06-22T02:04:44.3122301Z             {
2026-06-22T02:04:44.3122431Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3122536Z               "line": 499
2026-06-22T02:04:44.3122645Z             }
2026-06-22T02:04:44.3122746Z           ]
2026-06-22T02:04:44.3122846Z         }
2026-06-22T02:04:44.3122950Z       }
2026-06-22T02:04:44.3123049Z     },
2026-06-22T02:04:44.3123159Z     {
2026-06-22T02:04:44.3123276Z       "id": "REQ-HOST-RUN-1",
2026-06-22T02:04:44.3125744Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-22T02:04:44.3126086Z       "requiredStages": [
2026-06-22T02:04:44.3126195Z         "impl",
2026-06-22T02:04:44.3126295Z         "unit",
2026-06-22T02:04:44.3126406Z         "int"
2026-06-22T02:04:44.3126505Z       ],
2026-06-22T02:04:44.3126615Z       "stages": {
2026-06-22T02:04:44.3126716Z         "doc": {
2026-06-22T02:04:44.3126834Z           "complete": false,
2026-06-22T02:04:44.3126950Z           "evidence": []
2026-06-22T02:04:44.3127049Z         },
2026-06-22T02:04:44.3127144Z         "impl": {
2026-06-22T02:04:44.3127249Z           "complete": true,
2026-06-22T02:04:44.3127364Z           "evidence": [
2026-06-22T02:04:44.3127455Z             {
2026-06-22T02:04:44.3127627Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3127735Z               "line": 30
2026-06-22T02:04:44.3127840Z             },
2026-06-22T02:04:44.3127946Z             {
2026-06-22T02:04:44.3128098Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3128209Z               "line": 76
2026-06-22T02:04:44.3128309Z             },
2026-06-22T02:04:44.3128402Z             {
2026-06-22T02:04:44.3128540Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3128641Z               "line": 181
2026-06-22T02:04:44.3128750Z             },
2026-06-22T02:04:44.3128850Z             {
2026-06-22T02:04:44.3129051Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3129170Z               "line": 1266
2026-06-22T02:04:44.3129275Z             }
2026-06-22T02:04:44.3129384Z           ]
2026-06-22T02:04:44.3129484Z         },
2026-06-22T02:04:44.3129590Z         "int": {
2026-06-22T02:04:44.3129695Z           "complete": true,
2026-06-22T02:04:44.3129814Z           "evidence": [
2026-06-22T02:04:44.3129919Z             {
2026-06-22T02:04:44.3130071Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3130186Z               "line": 288
2026-06-22T02:04:44.3130290Z             }
2026-06-22T02:04:44.3130390Z           ]
2026-06-22T02:04:44.3130492Z         },
2026-06-22T02:04:44.3130591Z         "unit": {
2026-06-22T02:04:44.3130700Z           "complete": true,
2026-06-22T02:04:44.3130814Z           "evidence": [
2026-06-22T02:04:44.3130917Z             {
2026-06-22T02:04:44.3131068Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3131179Z               "line": 229
2026-06-22T02:04:44.3131269Z             },
2026-06-22T02:04:44.3131378Z             {
2026-06-22T02:04:44.3131527Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3131636Z               "line": 296
2026-06-22T02:04:44.3131742Z             },
2026-06-22T02:04:44.3131841Z             {
2026-06-22T02:04:44.3131994Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3132105Z               "line": 419
2026-06-22T02:04:44.3132209Z             }
2026-06-22T02:04:44.3132308Z           ]
2026-06-22T02:04:44.3132414Z         }
2026-06-22T02:04:44.3132523Z       }
2026-06-22T02:04:44.3132614Z     },
2026-06-22T02:04:44.3132720Z     {
2026-06-22T02:04:44.3132828Z       "id": "REQ-HOST-RUN-2",
2026-06-22T02:04:44.3134609Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-22T02:04:44.3134957Z       "requiredStages": [
2026-06-22T02:04:44.3135061Z         "impl",
2026-06-22T02:04:44.3135166Z         "unit",
2026-06-22T02:04:44.3135272Z         "int"
2026-06-22T02:04:44.3135376Z       ],
2026-06-22T02:04:44.3135486Z       "stages": {
2026-06-22T02:04:44.3135592Z         "doc": {
2026-06-22T02:04:44.3135710Z           "complete": false,
2026-06-22T02:04:44.3135815Z           "evidence": []
2026-06-22T02:04:44.3135921Z         },
2026-06-22T02:04:44.3136029Z         "impl": {
2026-06-22T02:04:44.3136142Z           "complete": true,
2026-06-22T02:04:44.3136267Z           "evidence": [
2026-06-22T02:04:44.3136365Z             {
2026-06-22T02:04:44.3136517Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3136623Z               "line": 182
2026-06-22T02:04:44.3136732Z             },
2026-06-22T02:04:44.3136841Z             {
2026-06-22T02:04:44.3136971Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:04:44.3137080Z               "line": 113
2026-06-22T02:04:44.3137175Z             }
2026-06-22T02:04:44.3137266Z           ]
2026-06-22T02:04:44.3137366Z         },
2026-06-22T02:04:44.3137466Z         "int": {
2026-06-22T02:04:44.3137576Z           "complete": true,
2026-06-22T02:04:44.3137686Z           "evidence": [
2026-06-22T02:04:44.3137785Z             {
2026-06-22T02:04:44.3137934Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3138043Z               "line": 575
2026-06-22T02:04:44.3138134Z             }
2026-06-22T02:04:44.3138243Z           ]
2026-06-22T02:04:44.3138353Z         },
2026-06-22T02:04:44.3138459Z         "unit": {
2026-06-22T02:04:44.3138568Z           "complete": true,
2026-06-22T02:04:44.3138677Z           "evidence": [
2026-06-22T02:04:44.3138783Z             {
2026-06-22T02:04:44.3138929Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:04:44.3139130Z               "line": 86
2026-06-22T02:04:44.3139230Z             }
2026-06-22T02:04:44.3139329Z           ]
2026-06-22T02:04:44.3139435Z         }
2026-06-22T02:04:44.3139535Z       }
2026-06-22T02:04:44.3139639Z     },
2026-06-22T02:04:44.3139740Z     {
2026-06-22T02:04:44.3139864Z       "id": "REQ-INFRA-1",
2026-06-22T02:04:44.3140074Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-22T02:04:44.3140197Z       "requiredStages": [],
2026-06-22T02:04:44.3140301Z       "stages": {
2026-06-22T02:04:44.3140403Z         "doc": {
2026-06-22T02:04:44.3140521Z           "complete": false,
2026-06-22T02:04:44.3140626Z           "evidence": []
2026-06-22T02:04:44.3140727Z         },
2026-06-22T02:04:44.3140832Z         "impl": {
2026-06-22T02:04:44.3140955Z           "complete": false,
2026-06-22T02:04:44.3141066Z           "evidence": []
2026-06-22T02:04:44.3141160Z         },
2026-06-22T02:04:44.3141274Z         "int": {
2026-06-22T02:04:44.3141383Z           "complete": false,
2026-06-22T02:04:44.3141515Z           "evidence": []
2026-06-22T02:04:44.3141610Z         },
2026-06-22T02:04:44.3141720Z         "unit": {
2026-06-22T02:04:44.3141844Z           "complete": false,
2026-06-22T02:04:44.3141958Z           "evidence": []
2026-06-22T02:04:44.3142064Z         }
2026-06-22T02:04:44.3142177Z       }
2026-06-22T02:04:44.3142287Z     },
2026-06-22T02:04:44.3142388Z     {
2026-06-22T02:04:44.3142515Z       "id": "REQ-INST-1",
2026-06-22T02:04:44.3142703Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-22T02:04:44.3142826Z       "requiredStages": [],
2026-06-22T02:04:44.3142946Z       "stages": {
2026-06-22T02:04:44.3143159Z         "doc": {
2026-06-22T02:04:44.3143280Z           "complete": false,
2026-06-22T02:04:44.3143398Z           "evidence": []
2026-06-22T02:04:44.3143507Z         },
2026-06-22T02:04:44.3143614Z         "impl": {
2026-06-22T02:04:44.3143731Z           "complete": false,
2026-06-22T02:04:44.3143972Z           "evidence": []
2026-06-22T02:04:44.3144074Z         },
2026-06-22T02:04:44.3144174Z         "int": {
2026-06-22T02:04:44.3144289Z           "complete": false,
2026-06-22T02:04:44.3144410Z           "evidence": []
2026-06-22T02:04:44.3144515Z         },
2026-06-22T02:04:44.3144616Z         "unit": {
2026-06-22T02:04:44.3144744Z           "complete": false,
2026-06-22T02:04:44.3144864Z           "evidence": []
2026-06-22T02:04:44.3144978Z         }
2026-06-22T02:04:44.3145082Z       }
2026-06-22T02:04:44.3145198Z     },
2026-06-22T02:04:44.3145317Z     {
2026-06-22T02:04:44.3145445Z       "id": "REQ-INST-10",
2026-06-22T02:04:44.3145707Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-22T02:04:44.3145832Z       "requiredStages": [
2026-06-22T02:04:44.3145936Z         "impl",
2026-06-22T02:04:44.3146046Z         "unit"
2026-06-22T02:04:44.3146157Z       ],
2026-06-22T02:04:44.3146265Z       "stages": {
2026-06-22T02:04:44.3146365Z         "doc": {
2026-06-22T02:04:44.3146496Z           "complete": false,
2026-06-22T02:04:44.3146603Z           "evidence": []
2026-06-22T02:04:44.3146716Z         },
2026-06-22T02:04:44.3146837Z         "impl": {
2026-06-22T02:04:44.3146953Z           "complete": true,
2026-06-22T02:04:44.3147077Z           "evidence": [
2026-06-22T02:04:44.3147188Z             {
2026-06-22T02:04:44.3147353Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3147460Z               "line": 648
2026-06-22T02:04:44.3147564Z             },
2026-06-22T02:04:44.3147668Z             {
2026-06-22T02:04:44.3147845Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3147954Z               "line": 725
2026-06-22T02:04:44.3148055Z             },
2026-06-22T02:04:44.3148169Z             {
2026-06-22T02:04:44.3148321Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:04:44.3148442Z               "line": 13
2026-06-22T02:04:44.3148555Z             },
2026-06-22T02:04:44.3148670Z             {
2026-06-22T02:04:44.3148827Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:04:44.3148932Z               "line": 67
2026-06-22T02:04:44.3149104Z             },
2026-06-22T02:04:44.3149208Z             {
2026-06-22T02:04:44.3149387Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3149556Z               "line": 18
2026-06-22T02:04:44.3149660Z             },
2026-06-22T02:04:44.3149766Z             {
2026-06-22T02:04:44.3149913Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3150014Z               "line": 444
2026-06-22T02:04:44.3150124Z             }
2026-06-22T02:04:44.3150218Z           ]
2026-06-22T02:04:44.3150305Z         },
2026-06-22T02:04:44.3150415Z         "int": {
2026-06-22T02:04:44.3150533Z           "complete": false,
2026-06-22T02:04:44.3150639Z           "evidence": []
2026-06-22T02:04:44.3150744Z         },
2026-06-22T02:04:44.3150857Z         "unit": {
2026-06-22T02:04:44.3150964Z           "complete": true,
2026-06-22T02:04:44.3151086Z           "evidence": [
2026-06-22T02:04:44.3151181Z             {
2026-06-22T02:04:44.3151349Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3151468Z               "line": 932
2026-06-22T02:04:44.3151588Z             },
2026-06-22T02:04:44.3151693Z             {
2026-06-22T02:04:44.3151844Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3151962Z               "line": 1309
2026-06-22T02:04:44.3152066Z             },
2026-06-22T02:04:44.3152170Z             {
2026-06-22T02:04:44.3152300Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3152409Z               "line": 1320
2026-06-22T02:04:44.3152629Z             },
2026-06-22T02:04:44.3152752Z             {
2026-06-22T02:04:44.3152896Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3153019Z               "line": 1336
2026-06-22T02:04:44.3153138Z             },
2026-06-22T02:04:44.3153239Z             {
2026-06-22T02:04:44.3153516Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3153639Z               "line": 1352
2026-06-22T02:04:44.3153758Z             },
2026-06-22T02:04:44.3153859Z             {
2026-06-22T02:04:44.3154006Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3154126Z               "line": 1374
2026-06-22T02:04:44.3154231Z             },
2026-06-22T02:04:44.3154340Z             {
2026-06-22T02:04:44.3154479Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3154588Z               "line": 1679
2026-06-22T02:04:44.3154687Z             },
2026-06-22T02:04:44.3154782Z             {
2026-06-22T02:04:44.3154933Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:04:44.3155037Z               "line": 130
2026-06-22T02:04:44.3155147Z             },
2026-06-22T02:04:44.3155248Z             {
2026-06-22T02:04:44.3155389Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:04:44.3155501Z               "line": 167
2026-06-22T02:04:44.3155600Z             },
2026-06-22T02:04:44.3155714Z             {
2026-06-22T02:04:44.3155848Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:04:44.3155952Z               "line": 175
2026-06-22T02:04:44.3156053Z             },
2026-06-22T02:04:44.3156163Z             {
2026-06-22T02:04:44.3156305Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:04:44.3156412Z               "line": 183
2026-06-22T02:04:44.3156529Z             },
2026-06-22T02:04:44.3156630Z             {
2026-06-22T02:04:44.3156760Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3156858Z               "line": 896
2026-06-22T02:04:44.3156954Z             }
2026-06-22T02:04:44.3157051Z           ]
2026-06-22T02:04:44.3157149Z         }
2026-06-22T02:04:44.3157254Z       }
2026-06-22T02:04:44.3157349Z     },
2026-06-22T02:04:44.3157448Z     {
2026-06-22T02:04:44.3157547Z       "id": "REQ-INST-11",
2026-06-22T02:04:44.3157800Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-22T02:04:44.3157928Z       "requiredStages": [
2026-06-22T02:04:44.3158034Z         "impl",
2026-06-22T02:04:44.3158138Z         "unit"
2026-06-22T02:04:44.3158243Z       ],
2026-06-22T02:04:44.3158349Z       "stages": {
2026-06-22T02:04:44.3158449Z         "doc": {
2026-06-22T02:04:44.3158562Z           "complete": false,
2026-06-22T02:04:44.3158678Z           "evidence": []
2026-06-22T02:04:44.3158777Z         },
2026-06-22T02:04:44.3158882Z         "impl": {
2026-06-22T02:04:44.3159077Z           "complete": true,
2026-06-22T02:04:44.3159187Z           "evidence": [
2026-06-22T02:04:44.3159293Z             {
2026-06-22T02:04:44.3159449Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3159555Z               "line": 514
2026-06-22T02:04:44.3159660Z             },
2026-06-22T02:04:44.3159764Z             {
2026-06-22T02:04:44.3159913Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.3160017Z               "line": 297
2026-06-22T02:04:44.3160116Z             },
2026-06-22T02:04:44.3160225Z             {
2026-06-22T02:04:44.3160369Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:04:44.3160473Z               "line": 59
2026-06-22T02:04:44.3160579Z             },
2026-06-22T02:04:44.3160670Z             {
2026-06-22T02:04:44.3160797Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3160904Z               "line": 5291
2026-06-22T02:04:44.3161003Z             },
2026-06-22T02:04:44.3161107Z             {
2026-06-22T02:04:44.3161232Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3161460Z               "line": 7137
2026-06-22T02:04:44.3161561Z             }
2026-06-22T02:04:44.3161670Z           ]
2026-06-22T02:04:44.3161770Z         },
2026-06-22T02:04:44.3161872Z         "int": {
2026-06-22T02:04:44.3161990Z           "complete": false,
2026-06-22T02:04:44.3162090Z           "evidence": []
2026-06-22T02:04:44.3162295Z         },
2026-06-22T02:04:44.3162384Z         "unit": {
2026-06-22T02:04:44.3162499Z           "complete": true,
2026-06-22T02:04:44.3162612Z           "evidence": [
2026-06-22T02:04:44.3162715Z             {
2026-06-22T02:04:44.3162860Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3162964Z               "line": 1479
2026-06-22T02:04:44.3163069Z             },
2026-06-22T02:04:44.3163160Z             {
2026-06-22T02:04:44.3163307Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3163412Z               "line": 1512
2026-06-22T02:04:44.3163522Z             },
2026-06-22T02:04:44.3166885Z             {
2026-06-22T02:04:44.3167103Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.3167224Z               "line": 527
2026-06-22T02:04:44.3167325Z             },
2026-06-22T02:04:44.3167432Z             {
2026-06-22T02:04:44.3167573Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:04:44.3167705Z               "line": 160
2026-06-22T02:04:44.3167809Z             },
2026-06-22T02:04:44.3167909Z             {
2026-06-22T02:04:44.3168050Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:04:44.3168150Z               "line": 190
2026-06-22T02:04:44.3168255Z             },
2026-06-22T02:04:44.3168361Z             {
2026-06-22T02:04:44.3168502Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:04:44.3168609Z               "line": 225
2026-06-22T02:04:44.3168713Z             },
2026-06-22T02:04:44.3168817Z             {
2026-06-22T02:04:44.3169032Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3169146Z               "line": 7994
2026-06-22T02:04:44.3169248Z             }
2026-06-22T02:04:44.3169347Z           ]
2026-06-22T02:04:44.3169447Z         }
2026-06-22T02:04:44.3169543Z       }
2026-06-22T02:04:44.3169642Z     },
2026-06-22T02:04:44.3169728Z     {
2026-06-22T02:04:44.3169848Z       "id": "REQ-INST-12",
2026-06-22T02:04:44.3170168Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-22T02:04:44.3170271Z       "requiredStages": [
2026-06-22T02:04:44.3170377Z         "impl",
2026-06-22T02:04:44.3170478Z         "unit"
2026-06-22T02:04:44.3170586Z       ],
2026-06-22T02:04:44.3170686Z       "stages": {
2026-06-22T02:04:44.3170790Z         "doc": {
2026-06-22T02:04:44.3170897Z           "complete": false,
2026-06-22T02:04:44.3171010Z           "evidence": []
2026-06-22T02:04:44.3171110Z         },
2026-06-22T02:04:44.3171215Z         "impl": {
2026-06-22T02:04:44.3171329Z           "complete": true,
2026-06-22T02:04:44.3171435Z           "evidence": [
2026-06-22T02:04:44.3171544Z             {
2026-06-22T02:04:44.3171691Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3171807Z               "line": 566
2026-06-22T02:04:44.3171921Z             },
2026-06-22T02:04:44.3172025Z             {
2026-06-22T02:04:44.3172169Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3172278Z               "line": 659
2026-06-22T02:04:44.3172374Z             },
2026-06-22T02:04:44.3172479Z             {
2026-06-22T02:04:44.3172617Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3172728Z               "line": 739
2026-06-22T02:04:44.3172821Z             },
2026-06-22T02:04:44.3172921Z             {
2026-06-22T02:04:44.3173059Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3173167Z               "line": 96
2026-06-22T02:04:44.3173271Z             },
2026-06-22T02:04:44.3173372Z             {
2026-06-22T02:04:44.3173505Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3173744Z               "line": 269
2026-06-22T02:04:44.3173853Z             },
2026-06-22T02:04:44.3173953Z             {
2026-06-22T02:04:44.3174092Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3174201Z               "line": 148
2026-06-22T02:04:44.3174392Z             }
2026-06-22T02:04:44.3174502Z           ]
2026-06-22T02:04:44.3174607Z         },
2026-06-22T02:04:44.3174712Z         "int": {
2026-06-22T02:04:44.3174821Z           "complete": false,
2026-06-22T02:04:44.3174926Z           "evidence": []
2026-06-22T02:04:44.3175022Z         },
2026-06-22T02:04:44.3175121Z         "unit": {
2026-06-22T02:04:44.3175237Z           "complete": true,
2026-06-22T02:04:44.3175342Z           "evidence": [
2026-06-22T02:04:44.3175445Z             {
2026-06-22T02:04:44.3175590Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3175699Z               "line": 1554
2026-06-22T02:04:44.3175797Z             },
2026-06-22T02:04:44.3175902Z             {
2026-06-22T02:04:44.3176053Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3176157Z               "line": 1577
2026-06-22T02:04:44.3176267Z             },
2026-06-22T02:04:44.3176368Z             {
2026-06-22T02:04:44.3176515Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3176626Z               "line": 1614
2026-06-22T02:04:44.3176730Z             },
2026-06-22T02:04:44.3176830Z             {
2026-06-22T02:04:44.3176959Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3177068Z               "line": 457
2026-06-22T02:04:44.3177163Z             },
2026-06-22T02:04:44.3177269Z             {
2026-06-22T02:04:44.3177416Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3177522Z               "line": 185
2026-06-22T02:04:44.3177626Z             },
2026-06-22T02:04:44.3177717Z             {
2026-06-22T02:04:44.3177856Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3177965Z               "line": 206
2026-06-22T02:04:44.3178069Z             },
2026-06-22T02:04:44.3178180Z             {
2026-06-22T02:04:44.3178321Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3178421Z               "line": 232
2026-06-22T02:04:44.3178526Z             }
2026-06-22T02:04:44.3178634Z           ]
2026-06-22T02:04:44.3178729Z         }
2026-06-22T02:04:44.3178815Z       }
2026-06-22T02:04:44.3178921Z     },
2026-06-22T02:04:44.3179096Z     {
2026-06-22T02:04:44.3179211Z       "id": "REQ-INST-13",
2026-06-22T02:04:44.3179416Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-22T02:04:44.3179526Z       "requiredStages": [
2026-06-22T02:04:44.3179630Z         "impl",
2026-06-22T02:04:44.3179731Z         "unit"
2026-06-22T02:04:44.3179836Z       ],
2026-06-22T02:04:44.3179940Z       "stages": {
2026-06-22T02:04:44.3180035Z         "doc": {
2026-06-22T02:04:44.3180151Z           "complete": false,
2026-06-22T02:04:44.3180264Z           "evidence": []
2026-06-22T02:04:44.3180360Z         },
2026-06-22T02:04:44.3180470Z         "impl": {
2026-06-22T02:04:44.3180584Z           "complete": true,
2026-06-22T02:04:44.3180690Z           "evidence": [
2026-06-22T02:04:44.3180790Z             {
2026-06-22T02:04:44.3180927Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3181043Z               "line": 100
2026-06-22T02:04:44.3181142Z             },
2026-06-22T02:04:44.3181251Z             {
2026-06-22T02:04:44.3181389Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3181499Z               "line": 171
2026-06-22T02:04:44.3181603Z             }
2026-06-22T02:04:44.3181694Z           ]
2026-06-22T02:04:44.3181795Z         },
2026-06-22T02:04:44.3181899Z         "int": {
2026-06-22T02:04:44.3182014Z           "complete": false,
2026-06-22T02:04:44.3182129Z           "evidence": []
2026-06-22T02:04:44.3182223Z         },
2026-06-22T02:04:44.3182428Z         "unit": {
2026-06-22T02:04:44.3182533Z           "complete": true,
2026-06-22T02:04:44.3182639Z           "evidence": [
2026-06-22T02:04:44.3182743Z             {
2026-06-22T02:04:44.3182895Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3182997Z               "line": 261
2026-06-22T02:04:44.3183201Z             },
2026-06-22T02:04:44.3183312Z             {
2026-06-22T02:04:44.3183457Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:04:44.3183567Z               "line": 279
2026-06-22T02:04:44.3183671Z             }
2026-06-22T02:04:44.3183755Z           ]
2026-06-22T02:04:44.3183864Z         }
2026-06-22T02:04:44.3183961Z       }
2026-06-22T02:04:44.3184065Z     },
2026-06-22T02:04:44.3184164Z     {
2026-06-22T02:04:44.3184271Z       "id": "REQ-INST-14",
2026-06-22T02:04:44.3184671Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-22T02:04:44.3184785Z       "requiredStages": [
2026-06-22T02:04:44.3184891Z         "doc",
2026-06-22T02:04:44.3184991Z         "impl",
2026-06-22T02:04:44.3185100Z         "unit"
2026-06-22T02:04:44.3185201Z       ],
2026-06-22T02:04:44.3185310Z       "stages": {
2026-06-22T02:04:44.3185419Z         "doc": {
2026-06-22T02:04:44.3185530Z           "complete": true,
2026-06-22T02:04:44.3185634Z           "evidence": [
2026-06-22T02:04:44.3185729Z             {
2026-06-22T02:04:44.3185855Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3185962Z               "line": 588
2026-06-22T02:04:44.3186068Z             },
2026-06-22T02:04:44.3186170Z             {
2026-06-22T02:04:44.3186291Z               "path": "docs/STORAGE.md",
2026-06-22T02:04:44.3186405Z               "line": 49
2026-06-22T02:04:44.3186506Z             }
2026-06-22T02:04:44.3186608Z           ]
2026-06-22T02:04:44.3186707Z         },
2026-06-22T02:04:44.3186814Z         "impl": {
2026-06-22T02:04:44.3186923Z           "complete": true,
2026-06-22T02:04:44.3187032Z           "evidence": [
2026-06-22T02:04:44.3187133Z             {
2026-06-22T02:04:44.3187290Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3187400Z               "line": 410
2026-06-22T02:04:44.3187505Z             },
2026-06-22T02:04:44.3187614Z             {
2026-06-22T02:04:44.3187758Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3187867Z               "line": 367
2026-06-22T02:04:44.3187967Z             },
2026-06-22T02:04:44.3188063Z             {
2026-06-22T02:04:44.3188206Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3188310Z               "line": 293
2026-06-22T02:04:44.3188416Z             },
2026-06-22T02:04:44.3188525Z             {
2026-06-22T02:04:44.3188649Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3188755Z               "line": 1577
2026-06-22T02:04:44.3188854Z             }
2026-06-22T02:04:44.3189029Z           ]
2026-06-22T02:04:44.3189133Z         },
2026-06-22T02:04:44.3189236Z         "int": {
2026-06-22T02:04:44.3189356Z           "complete": false,
2026-06-22T02:04:44.3189457Z           "evidence": []
2026-06-22T02:04:44.3189560Z         },
2026-06-22T02:04:44.3189661Z         "unit": {
2026-06-22T02:04:44.3189771Z           "complete": true,
2026-06-22T02:04:44.3189880Z           "evidence": [
2026-06-22T02:04:44.3189986Z             {
2026-06-22T02:04:44.3190129Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3190237Z               "line": 1163
2026-06-22T02:04:44.3190344Z             },
2026-06-22T02:04:44.3190443Z             {
2026-06-22T02:04:44.3190586Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3190692Z               "line": 944
2026-06-22T02:04:44.3190801Z             },
2026-06-22T02:04:44.3190906Z             {
2026-06-22T02:04:44.3191044Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3191154Z               "line": 1205
2026-06-22T02:04:44.3191355Z             },
2026-06-22T02:04:44.3191459Z             {
2026-06-22T02:04:44.3191589Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3191702Z               "line": 659
2026-06-22T02:04:44.3191801Z             },
2026-06-22T02:04:44.3191896Z             {
2026-06-22T02:04:44.3192120Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3192231Z               "line": 8070
2026-06-22T02:04:44.3192330Z             }
2026-06-22T02:04:44.3192421Z           ]
2026-06-22T02:04:44.3192526Z         }
2026-06-22T02:04:44.3192627Z       }
2026-06-22T02:04:44.3192722Z     },
2026-06-22T02:04:44.3192812Z     {
2026-06-22T02:04:44.3192923Z       "id": "REQ-INST-15",
2026-06-22T02:04:44.3193670Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-22T02:04:44.3193794Z       "requiredStages": [
2026-06-22T02:04:44.3193886Z         "doc",
2026-06-22T02:04:44.3193994Z         "impl",
2026-06-22T02:04:44.3194098Z         "unit"
2026-06-22T02:04:44.3194203Z       ],
2026-06-22T02:04:44.3194301Z       "stages": {
2026-06-22T02:04:44.3194405Z         "doc": {
2026-06-22T02:04:44.3194521Z           "complete": true,
2026-06-22T02:04:44.3194630Z           "evidence": [
2026-06-22T02:04:44.3194734Z             {
2026-06-22T02:04:44.3194936Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-22T02:04:44.3195044Z               "line": 3
2026-06-22T02:04:44.3195141Z             }
2026-06-22T02:04:44.3195246Z           ]
2026-06-22T02:04:44.3195350Z         },
2026-06-22T02:04:44.3195451Z         "impl": {
2026-06-22T02:04:44.3195570Z           "complete": true,
2026-06-22T02:04:44.3195679Z           "evidence": [
2026-06-22T02:04:44.3195775Z             {
2026-06-22T02:04:44.3195927Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3196037Z               "line": 353
2026-06-22T02:04:44.3196142Z             },
2026-06-22T02:04:44.3196237Z             {
2026-06-22T02:04:44.3196376Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3196485Z               "line": 60
2026-06-22T02:04:44.3196595Z             },
2026-06-22T02:04:44.3196696Z             {
2026-06-22T02:04:44.3196842Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.3196950Z               "line": 368
2026-06-22T02:04:44.3197051Z             },
2026-06-22T02:04:44.3197154Z             {
2026-06-22T02:04:44.3197301Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.3197412Z               "line": 417
2026-06-22T02:04:44.3197511Z             },
2026-06-22T02:04:44.3197616Z             {
2026-06-22T02:04:44.3197755Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3197864Z               "line": 19
2026-06-22T02:04:44.3197969Z             },
2026-06-22T02:04:44.3198065Z             {
2026-06-22T02:04:44.3198203Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3198298Z               "line": 70
2026-06-22T02:04:44.3198403Z             },
2026-06-22T02:04:44.3198513Z             {
2026-06-22T02:04:44.3198643Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3198751Z               "line": 96
2026-06-22T02:04:44.3198856Z             },
2026-06-22T02:04:44.3199033Z             {
2026-06-22T02:04:44.3199157Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3199277Z               "line": 121
2026-06-22T02:04:44.3199381Z             },
2026-06-22T02:04:44.3199479Z             {
2026-06-22T02:04:44.3199614Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3199717Z               "line": 172
2026-06-22T02:04:44.3199815Z             },
2026-06-22T02:04:44.3199916Z             {
2026-06-22T02:04:44.3200050Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3200255Z               "line": 178
2026-06-22T02:04:44.3200360Z             },
2026-06-22T02:04:44.3200464Z             {
2026-06-22T02:04:44.3200594Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3200698Z               "line": 1469
2026-06-22T02:04:44.3200894Z             }
2026-06-22T02:04:44.3200989Z           ]
2026-06-22T02:04:44.3201089Z         },
2026-06-22T02:04:44.3201190Z         "int": {
2026-06-22T02:04:44.3201309Z           "complete": false,
2026-06-22T02:04:44.3201418Z           "evidence": []
2026-06-22T02:04:44.3201524Z         },
2026-06-22T02:04:44.3201628Z         "unit": {
2026-06-22T02:04:44.3201737Z           "complete": true,
2026-06-22T02:04:44.3201844Z           "evidence": [
2026-06-22T02:04:44.3201933Z             {
2026-06-22T02:04:44.3202086Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.3202192Z               "line": 577
2026-06-22T02:04:44.3202304Z             },
2026-06-22T02:04:44.3202409Z             {
2026-06-22T02:04:44.3202553Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.3202666Z               "line": 638
2026-06-22T02:04:44.3202761Z             },
2026-06-22T02:04:44.3202868Z             {
2026-06-22T02:04:44.3202995Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3203111Z               "line": 213
2026-06-22T02:04:44.3203215Z             },
2026-06-22T02:04:44.3203314Z             {
2026-06-22T02:04:44.3203449Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3203553Z               "line": 249
2026-06-22T02:04:44.3203662Z             },
2026-06-22T02:04:44.3203764Z             {
2026-06-22T02:04:44.3203896Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3204016Z               "line": 262
2026-06-22T02:04:44.3204112Z             },
2026-06-22T02:04:44.3204215Z             {
2026-06-22T02:04:44.3204350Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:04:44.3204465Z               "line": 338
2026-06-22T02:04:44.3204563Z             },
2026-06-22T02:04:44.3204658Z             {
2026-06-22T02:04:44.3204811Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3204904Z               "line": 690
2026-06-22T02:04:44.3205014Z             },
2026-06-22T02:04:44.3205114Z             {
2026-06-22T02:04:44.3205252Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3205357Z               "line": 8007
2026-06-22T02:04:44.3205467Z             },
2026-06-22T02:04:44.3205566Z             {
2026-06-22T02:04:44.3205692Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3205796Z               "line": 9837
2026-06-22T02:04:44.3205895Z             }
2026-06-22T02:04:44.3206002Z           ]
2026-06-22T02:04:44.3206101Z         }
2026-06-22T02:04:44.3206205Z       }
2026-06-22T02:04:44.3206297Z     },
2026-06-22T02:04:44.3206392Z     {
2026-06-22T02:04:44.3206511Z       "id": "REQ-INST-2",
2026-06-22T02:04:44.3206655Z       "title": "Per-node files, synced Psyche mind",
2026-06-22T02:04:44.3206768Z       "requiredStages": [
2026-06-22T02:04:44.3206873Z         "impl",
2026-06-22T02:04:44.3206980Z         "unit"
2026-06-22T02:04:44.3207087Z       ],
2026-06-22T02:04:44.3207193Z       "stages": {
2026-06-22T02:04:44.3207299Z         "doc": {
2026-06-22T02:04:44.3207411Z           "complete": false,
2026-06-22T02:04:44.3207525Z           "evidence": []
2026-06-22T02:04:44.3207626Z         },
2026-06-22T02:04:44.3207733Z         "impl": {
2026-06-22T02:04:44.3207847Z           "complete": true,
2026-06-22T02:04:44.3207953Z           "evidence": [
2026-06-22T02:04:44.3208057Z             {
2026-06-22T02:04:44.3208210Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3208315Z               "line": 108
2026-06-22T02:04:44.3208405Z             },
2026-06-22T02:04:44.3208510Z             {
2026-06-22T02:04:44.3208658Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.3208840Z               "line": 28
2026-06-22T02:04:44.3209025Z             },
2026-06-22T02:04:44.3209116Z             {
2026-06-22T02:04:44.3209245Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.3209354Z               "line": 74
2026-06-22T02:04:44.3209464Z             },
2026-06-22T02:04:44.3209673Z             {
2026-06-22T02:04:44.3209804Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.3209913Z               "line": 96
2026-06-22T02:04:44.3210012Z             },
2026-06-22T02:04:44.3210116Z             {
2026-06-22T02:04:44.3210253Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.3210348Z               "line": 86
2026-06-22T02:04:44.3210452Z             },
2026-06-22T02:04:44.3210553Z             {
2026-06-22T02:04:44.3210695Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:04:44.3210806Z               "line": 118
2026-06-22T02:04:44.3210911Z             }
2026-06-22T02:04:44.3211015Z           ]
2026-06-22T02:04:44.3211116Z         },
2026-06-22T02:04:44.3211221Z         "int": {
2026-06-22T02:04:44.3211330Z           "complete": false,
2026-06-22T02:04:44.3211436Z           "evidence": []
2026-06-22T02:04:44.3211535Z         },
2026-06-22T02:04:44.3211639Z         "unit": {
2026-06-22T02:04:44.3211750Z           "complete": true,
2026-06-22T02:04:44.3211859Z           "evidence": [
2026-06-22T02:04:44.3211964Z             {
2026-06-22T02:04:44.3212099Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:04:44.3212202Z               "line": 250
2026-06-22T02:04:44.3212302Z             },
2026-06-22T02:04:44.3212414Z             {
2026-06-22T02:04:44.3212536Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.3212641Z               "line": 280
2026-06-22T02:04:44.3212747Z             }
2026-06-22T02:04:44.3212850Z           ]
2026-06-22T02:04:44.3212945Z         }
2026-06-22T02:04:44.3213041Z       }
2026-06-22T02:04:44.3213142Z     },
2026-06-22T02:04:44.3213245Z     {
2026-06-22T02:04:44.3213351Z       "id": "REQ-INST-3",
2026-06-22T02:04:44.3213527Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-22T02:04:44.3213636Z       "requiredStages": [
2026-06-22T02:04:44.3213747Z         "doc",
2026-06-22T02:04:44.3213851Z         "impl",
2026-06-22T02:04:44.3213951Z         "unit"
2026-06-22T02:04:44.3214043Z       ],
2026-06-22T02:04:44.3214152Z       "stages": {
2026-06-22T02:04:44.3214261Z         "doc": {
2026-06-22T02:04:44.3214362Z           "complete": true,
2026-06-22T02:04:44.3214466Z           "evidence": [
2026-06-22T02:04:44.3214571Z             {
2026-06-22T02:04:44.3214710Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-22T02:04:44.3214819Z               "line": 3
2026-06-22T02:04:44.3214924Z             }
2026-06-22T02:04:44.3215030Z           ]
2026-06-22T02:04:44.3215128Z         },
2026-06-22T02:04:44.3215232Z         "impl": {
2026-06-22T02:04:44.3215333Z           "complete": true,
2026-06-22T02:04:44.3215440Z           "evidence": [
2026-06-22T02:04:44.3215535Z             {
2026-06-22T02:04:44.3215689Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3215793Z               "line": 60
2026-06-22T02:04:44.3215898Z             },
2026-06-22T02:04:44.3216003Z             {
2026-06-22T02:04:44.3216146Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3216252Z               "line": 480
2026-06-22T02:04:44.3216351Z             },
2026-06-22T02:04:44.3216451Z             {
2026-06-22T02:04:44.3216600Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3216709Z               "line": 254
2026-06-22T02:04:44.3216814Z             },
2026-06-22T02:04:44.3216915Z             {
2026-06-22T02:04:44.3217062Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3217167Z               "line": 384
2026-06-22T02:04:44.3217272Z             },
2026-06-22T02:04:44.3217372Z             {
2026-06-22T02:04:44.3217638Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3217748Z               "line": 418
2026-06-22T02:04:44.3217845Z             },
2026-06-22T02:04:44.3217944Z             {
2026-06-22T02:04:44.3218076Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T02:04:44.3218257Z               "line": 74
2026-06-22T02:04:44.3218364Z             },
2026-06-22T02:04:44.3218465Z             {
2026-06-22T02:04:44.3218613Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3218722Z               "line": 234
2026-06-22T02:04:44.3218828Z             },
2026-06-22T02:04:44.3218933Z             {
2026-06-22T02:04:44.3219167Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3219271Z               "line": 396
2026-06-22T02:04:44.3219366Z             },
2026-06-22T02:04:44.3219472Z             {
2026-06-22T02:04:44.3219604Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3219714Z               "line": 45
2026-06-22T02:04:44.3219820Z             },
2026-06-22T02:04:44.3219924Z             {
2026-06-22T02:04:44.3220063Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3220167Z               "line": 114
2026-06-22T02:04:44.3220277Z             },
2026-06-22T02:04:44.3220378Z             {
2026-06-22T02:04:44.3220524Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3220623Z               "line": 152
2026-06-22T02:04:44.3220724Z             },
2026-06-22T02:04:44.3220827Z             {
2026-06-22T02:04:44.3220964Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3221075Z               "line": 168
2026-06-22T02:04:44.3221170Z             },
2026-06-22T02:04:44.3221274Z             {
2026-06-22T02:04:44.3221423Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3221527Z               "line": 178
2026-06-22T02:04:44.3221637Z             },
2026-06-22T02:04:44.3221737Z             {
2026-06-22T02:04:44.3221880Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3221986Z               "line": 210
2026-06-22T02:04:44.3222090Z             },
2026-06-22T02:04:44.3222199Z             {
2026-06-22T02:04:44.3222335Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3222448Z               "line": 287
2026-06-22T02:04:44.3222548Z             },
2026-06-22T02:04:44.3222649Z             {
2026-06-22T02:04:44.3222776Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3222891Z               "line": 311
2026-06-22T02:04:44.3223002Z             },
2026-06-22T02:04:44.3223096Z             {
2026-06-22T02:04:44.3223240Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3223336Z               "line": 389
2026-06-22T02:04:44.3223434Z             },
2026-06-22T02:04:44.3223543Z             {
2026-06-22T02:04:44.3223683Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3223796Z               "line": 438
2026-06-22T02:04:44.3223901Z             },
2026-06-22T02:04:44.3224011Z             {
2026-06-22T02:04:44.3224153Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-22T02:04:44.3224274Z               "line": 37
2026-06-22T02:04:44.3224383Z             },
2026-06-22T02:04:44.3224492Z             {
2026-06-22T02:04:44.3224636Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3224740Z               "line": 62
2026-06-22T02:04:44.3224841Z             },
2026-06-22T02:04:44.3224932Z             {
2026-06-22T02:04:44.3225074Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3225175Z               "line": 279
2026-06-22T02:04:44.3225275Z             },
2026-06-22T02:04:44.3225379Z             {
2026-06-22T02:04:44.3225509Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3225627Z               "line": 1848
2026-06-22T02:04:44.3225717Z             }
2026-06-22T02:04:44.3225822Z           ]
2026-06-22T02:04:44.3226029Z         },
2026-06-22T02:04:44.3226129Z         "int": {
2026-06-22T02:04:44.3226249Z           "complete": false,
2026-06-22T02:04:44.3226358Z           "evidence": []
2026-06-22T02:04:44.3226463Z         },
2026-06-22T02:04:44.3226564Z         "unit": {
2026-06-22T02:04:44.3226677Z           "complete": true,
2026-06-22T02:04:44.3226883Z           "evidence": [
2026-06-22T02:04:44.3226978Z             {
2026-06-22T02:04:44.3227126Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.3227235Z               "line": 360
2026-06-22T02:04:44.3227344Z             },
2026-06-22T02:04:44.3227441Z             {
2026-06-22T02:04:44.3227589Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3227703Z               "line": 837
2026-06-22T02:04:44.3227809Z             },
2026-06-22T02:04:44.3227912Z             {
2026-06-22T02:04:44.3228047Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3228152Z               "line": 894
2026-06-22T02:04:44.3228256Z             },
2026-06-22T02:04:44.3228357Z             {
2026-06-22T02:04:44.3228509Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.3228608Z               "line": 889
2026-06-22T02:04:44.3228708Z             },
2026-06-22T02:04:44.3228812Z             {
2026-06-22T02:04:44.3229044Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.3229160Z               "line": 1014
2026-06-22T02:04:44.3229258Z             },
2026-06-22T02:04:44.3229364Z             {
2026-06-22T02:04:44.3229512Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3229616Z               "line": 1264
2026-06-22T02:04:44.3229722Z             },
2026-06-22T02:04:44.3229827Z             {
2026-06-22T02:04:44.3229979Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3230084Z               "line": 1405
2026-06-22T02:04:44.3230188Z             },
2026-06-22T02:04:44.3230294Z             {
2026-06-22T02:04:44.3230441Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3230541Z               "line": 449
2026-06-22T02:04:44.3230633Z             },
2026-06-22T02:04:44.3230742Z             {
2026-06-22T02:04:44.3230875Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3230991Z               "line": 485
2026-06-22T02:04:44.3231084Z             },
2026-06-22T02:04:44.3231189Z             {
2026-06-22T02:04:44.3231322Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3231434Z               "line": 540
2026-06-22T02:04:44.3231529Z             },
2026-06-22T02:04:44.3231630Z             {
2026-06-22T02:04:44.3231773Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3231878Z               "line": 697
2026-06-22T02:04:44.3231983Z             },
2026-06-22T02:04:44.3232078Z             {
2026-06-22T02:04:44.3232217Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3232326Z               "line": 931
2026-06-22T02:04:44.3232426Z             },
2026-06-22T02:04:44.3232532Z             {
2026-06-22T02:04:44.3232660Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3232774Z               "line": 945
2026-06-22T02:04:44.3232875Z             },
2026-06-22T02:04:44.3232979Z             {
2026-06-22T02:04:44.3233127Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3233238Z               "line": 1290
2026-06-22T02:04:44.3233346Z             },
2026-06-22T02:04:44.3233447Z             {
2026-06-22T02:04:44.3233590Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3233694Z               "line": 609
2026-06-22T02:04:44.3233801Z             },
2026-06-22T02:04:44.3233910Z             {
2026-06-22T02:04:44.3234037Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3234146Z               "line": 8031
2026-06-22T02:04:44.3234243Z             }
2026-06-22T02:04:44.3234476Z           ]
2026-06-22T02:04:44.3234571Z         }
2026-06-22T02:04:44.3234676Z       }
2026-06-22T02:04:44.3234776Z     },
2026-06-22T02:04:44.3234876Z     {
2026-06-22T02:04:44.3234985Z       "id": "REQ-INST-4",
2026-06-22T02:04:44.3235181Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-22T02:04:44.3235391Z       "requiredStages": [
2026-06-22T02:04:44.3235501Z         "impl",
2026-06-22T02:04:44.3235606Z         "unit"
2026-06-22T02:04:44.3235711Z       ],
2026-06-22T02:04:44.3235816Z       "stages": {
2026-06-22T02:04:44.3235920Z         "doc": {
2026-06-22T02:04:44.3236030Z           "complete": false,
2026-06-22T02:04:44.3236145Z           "evidence": []
2026-06-22T02:04:44.3236244Z         },
2026-06-22T02:04:44.3236348Z         "impl": {
2026-06-22T02:04:44.3236463Z           "complete": true,
2026-06-22T02:04:44.3236575Z           "evidence": [
2026-06-22T02:04:44.3236680Z             {
2026-06-22T02:04:44.3236824Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3236941Z               "line": 385
2026-06-22T02:04:44.3237038Z             },
2026-06-22T02:04:44.3237143Z             {
2026-06-22T02:04:44.3237290Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3237401Z               "line": 202
2026-06-22T02:04:44.3237510Z             },
2026-06-22T02:04:44.3237609Z             {
2026-06-22T02:04:44.3237748Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3237858Z               "line": 234
2026-06-22T02:04:44.3237963Z             },
2026-06-22T02:04:44.3238063Z             {
2026-06-22T02:04:44.3238206Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3238317Z               "line": 274
2026-06-22T02:04:44.3238416Z             }
2026-06-22T02:04:44.3238525Z           ]
2026-06-22T02:04:44.3238622Z         },
2026-06-22T02:04:44.3238731Z         "int": {
2026-06-22T02:04:44.3238850Z           "complete": false,
2026-06-22T02:04:44.3239032Z           "evidence": []
2026-06-22T02:04:44.3239134Z         },
2026-06-22T02:04:44.3239234Z         "unit": {
2026-06-22T02:04:44.3239353Z           "complete": true,
2026-06-22T02:04:44.3239456Z           "evidence": [
2026-06-22T02:04:44.3239566Z             {
2026-06-22T02:04:44.3239715Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3239823Z               "line": 889
2026-06-22T02:04:44.3239929Z             },
2026-06-22T02:04:44.3240034Z             {
2026-06-22T02:04:44.3240176Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3240282Z               "line": 561
2026-06-22T02:04:44.3240396Z             },
2026-06-22T02:04:44.3240501Z             {
2026-06-22T02:04:44.3240640Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3240753Z               "line": 668
2026-06-22T02:04:44.3240849Z             },
2026-06-22T02:04:44.3240959Z             {
2026-06-22T02:04:44.3241101Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3241212Z               "line": 750
2026-06-22T02:04:44.3241321Z             }
2026-06-22T02:04:44.3241421Z           ]
2026-06-22T02:04:44.3241527Z         }
2026-06-22T02:04:44.3241626Z       }
2026-06-22T02:04:44.3241730Z     },
2026-06-22T02:04:44.3241830Z     {
2026-06-22T02:04:44.3241944Z       "id": "REQ-INST-5",
2026-06-22T02:04:44.3242166Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-22T02:04:44.3242277Z       "requiredStages": [
2026-06-22T02:04:44.3242390Z         "impl",
2026-06-22T02:04:44.3242486Z         "unit",
2026-06-22T02:04:44.3242591Z         "int"
2026-06-22T02:04:44.3245870Z       ],
2026-06-22T02:04:44.3246009Z       "stages": {
2026-06-22T02:04:44.3246123Z         "doc": {
2026-06-22T02:04:44.3246237Z           "complete": false,
2026-06-22T02:04:44.3246348Z           "evidence": []
2026-06-22T02:04:44.3246451Z         },
2026-06-22T02:04:44.3246561Z         "impl": {
2026-06-22T02:04:44.3246700Z           "complete": true,
2026-06-22T02:04:44.3246985Z           "evidence": [
2026-06-22T02:04:44.3247083Z             {
2026-06-22T02:04:44.3247245Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T02:04:44.3247360Z               "line": 85
2026-06-22T02:04:44.3247460Z             },
2026-06-22T02:04:44.3247560Z             {
2026-06-22T02:04:44.3247793Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3247908Z               "line": 68
2026-06-22T02:04:44.3248013Z             },
2026-06-22T02:04:44.3248108Z             {
2026-06-22T02:04:44.3248257Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3248366Z               "line": 99
2026-06-22T02:04:44.3248465Z             },
2026-06-22T02:04:44.3248567Z             {
2026-06-22T02:04:44.3248694Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3248803Z               "line": 183
2026-06-22T02:04:44.3248905Z             },
2026-06-22T02:04:44.3249090Z             {
2026-06-22T02:04:44.3249229Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3249343Z               "line": 314
2026-06-22T02:04:44.3249453Z             }
2026-06-22T02:04:44.3249558Z           ]
2026-06-22T02:04:44.3249681Z         },
2026-06-22T02:04:44.3249780Z         "int": {
2026-06-22T02:04:44.3249895Z           "complete": true,
2026-06-22T02:04:44.3249993Z           "evidence": [
2026-06-22T02:04:44.3250092Z             {
2026-06-22T02:04:44.3250251Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3250360Z               "line": 156
2026-06-22T02:04:44.3250460Z             },
2026-06-22T02:04:44.3250561Z             {
2026-06-22T02:04:44.3250712Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:04:44.3250818Z               "line": 145
2026-06-22T02:04:44.3250923Z             },
2026-06-22T02:04:44.3251022Z             {
2026-06-22T02:04:44.3251171Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3251285Z               "line": 707
2026-06-22T02:04:44.3251385Z             },
2026-06-22T02:04:44.3251477Z             {
2026-06-22T02:04:44.3251619Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3251729Z               "line": 1069
2026-06-22T02:04:44.3251839Z             }
2026-06-22T02:04:44.3251943Z           ]
2026-06-22T02:04:44.3252049Z         },
2026-06-22T02:04:44.3252149Z         "unit": {
2026-06-22T02:04:44.3252261Z           "complete": true,
2026-06-22T02:04:44.3252366Z           "evidence": [
2026-06-22T02:04:44.3252476Z             {
2026-06-22T02:04:44.3252607Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3252717Z               "line": 552
2026-06-22T02:04:44.3252823Z             },
2026-06-22T02:04:44.3252916Z             {
2026-06-22T02:04:44.3253061Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3253171Z               "line": 595
2026-06-22T02:04:44.3253274Z             },
2026-06-22T02:04:44.3253371Z             {
2026-06-22T02:04:44.3253518Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:04:44.3253627Z               "line": 219
2026-06-22T02:04:44.3253719Z             }
2026-06-22T02:04:44.3253828Z           ]
2026-06-22T02:04:44.3253913Z         }
2026-06-22T02:04:44.3254024Z       }
2026-06-22T02:04:44.3254128Z     },
2026-06-22T02:04:44.3254218Z     {
2026-06-22T02:04:44.3254334Z       "id": "REQ-INST-6",
2026-06-22T02:04:44.3254538Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-22T02:04:44.3254649Z       "requiredStages": [
2026-06-22T02:04:44.3254748Z         "impl",
2026-06-22T02:04:44.3254848Z         "unit",
2026-06-22T02:04:44.3254945Z         "int"
2026-06-22T02:04:44.3255045Z       ],
2026-06-22T02:04:44.3255148Z       "stages": {
2026-06-22T02:04:44.3255248Z         "doc": {
2026-06-22T02:04:44.3255368Z           "complete": true,
2026-06-22T02:04:44.3255467Z           "evidence": [
2026-06-22T02:04:44.3255572Z             {
2026-06-22T02:04:44.3255824Z               "path": "docs/DEFERRED.md",
2026-06-22T02:04:44.3255950Z               "line": 13
2026-06-22T02:04:44.3256073Z             }
2026-06-22T02:04:44.3256172Z           ]
2026-06-22T02:04:44.3256264Z         },
2026-06-22T02:04:44.3256368Z         "impl": {
2026-06-22T02:04:44.3256483Z           "complete": true,
2026-06-22T02:04:44.3256688Z           "evidence": [
2026-06-22T02:04:44.3256793Z             {
2026-06-22T02:04:44.3256951Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3257059Z               "line": 391
2026-06-22T02:04:44.3257165Z             },
2026-06-22T02:04:44.3257266Z             {
2026-06-22T02:04:44.3257407Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:04:44.3257516Z               "line": 27
2026-06-22T02:04:44.3257615Z             },
2026-06-22T02:04:44.3257715Z             {
2026-06-22T02:04:44.3257858Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:04:44.3257963Z               "line": 73
2026-06-22T02:04:44.3258067Z             },
2026-06-22T02:04:44.3258172Z             {
2026-06-22T02:04:44.3258305Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:04:44.3258414Z               "line": 182
2026-06-22T02:04:44.3258516Z             },
2026-06-22T02:04:44.3258620Z             {
2026-06-22T02:04:44.3258764Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3258859Z               "line": 426
2026-06-22T02:04:44.3259035Z             },
2026-06-22T02:04:44.3259132Z             {
2026-06-22T02:04:44.3259269Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T02:04:44.3259373Z               "line": 31
2026-06-22T02:04:44.3259480Z             },
2026-06-22T02:04:44.3259583Z             {
2026-06-22T02:04:44.3259718Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3259832Z               "line": 202
2026-06-22T02:04:44.3259936Z             },
2026-06-22T02:04:44.3260028Z             {
2026-06-22T02:04:44.3260170Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.3260274Z               "line": 83
2026-06-22T02:04:44.3260378Z             },
2026-06-22T02:04:44.3260483Z             {
2026-06-22T02:04:44.3260610Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3260725Z               "line": 1849
2026-06-22T02:04:44.3260830Z             },
2026-06-22T02:04:44.3260925Z             {
2026-06-22T02:04:44.3261054Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3261169Z               "line": 179
2026-06-22T02:04:44.3261272Z             },
2026-06-22T02:04:44.3261355Z             {
2026-06-22T02:04:44.3261488Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3261592Z               "line": 215
2026-06-22T02:04:44.3261684Z             }
2026-06-22T02:04:44.3261783Z           ]
2026-06-22T02:04:44.3261883Z         },
2026-06-22T02:04:44.3261989Z         "int": {
2026-06-22T02:04:44.3262103Z           "complete": true,
2026-06-22T02:04:44.3262217Z           "evidence": [
2026-06-22T02:04:44.3262304Z             {
2026-06-22T02:04:44.3262455Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3262560Z               "line": 721
2026-06-22T02:04:44.3262666Z             },
2026-06-22T02:04:44.3262775Z             {
2026-06-22T02:04:44.3262921Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3263036Z               "line": 1114
2026-06-22T02:04:44.3263139Z             },
2026-06-22T02:04:44.3263234Z             {
2026-06-22T02:04:44.3263363Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3263472Z               "line": 726
2026-06-22T02:04:44.3263577Z             }
2026-06-22T02:04:44.3263674Z           ]
2026-06-22T02:04:44.3263773Z         },
2026-06-22T02:04:44.3263873Z         "unit": {
2026-06-22T02:04:44.3263988Z           "complete": true,
2026-06-22T02:04:44.3264097Z           "evidence": [
2026-06-22T02:04:44.3264202Z             {
2026-06-22T02:04:44.3264459Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3264565Z               "line": 661
2026-06-22T02:04:44.3264665Z             },
2026-06-22T02:04:44.3264760Z             {
2026-06-22T02:04:44.3264909Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.3265108Z               "line": 899
2026-06-22T02:04:44.3265214Z             },
2026-06-22T02:04:44.3265322Z             {
2026-06-22T02:04:44.3265457Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T02:04:44.3265557Z               "line": 66
2026-06-22T02:04:44.3265647Z             },
2026-06-22T02:04:44.3265750Z             {
2026-06-22T02:04:44.3265875Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3265985Z               "line": 297
2026-06-22T02:04:44.3266094Z             },
2026-06-22T02:04:44.3266185Z             {
2026-06-22T02:04:44.3266332Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.3266442Z               "line": 203
2026-06-22T02:04:44.3266552Z             }
2026-06-22T02:04:44.3266647Z           ]
2026-06-22T02:04:44.3266752Z         }
2026-06-22T02:04:44.3266844Z       }
2026-06-22T02:04:44.3266928Z     },
2026-06-22T02:04:44.3267028Z     {
2026-06-22T02:04:44.3267135Z       "id": "REQ-INST-7",
2026-06-22T02:04:44.3267300Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-22T02:04:44.3267406Z       "requiredStages": [
2026-06-22T02:04:44.3267511Z         "impl",
2026-06-22T02:04:44.3267615Z         "unit",
2026-06-22T02:04:44.3267715Z         "int"
2026-06-22T02:04:44.3267807Z       ],
2026-06-22T02:04:44.3267910Z       "stages": {
2026-06-22T02:04:44.3268014Z         "doc": {
2026-06-22T02:04:44.3268129Z           "complete": false,
2026-06-22T02:04:44.3268231Z           "evidence": []
2026-06-22T02:04:44.3268322Z         },
2026-06-22T02:04:44.3268423Z         "impl": {
2026-06-22T02:04:44.3268532Z           "complete": true,
2026-06-22T02:04:44.3268632Z           "evidence": [
2026-06-22T02:04:44.3268737Z             {
2026-06-22T02:04:44.3268880Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3269053Z               "line": 436
2026-06-22T02:04:44.3269147Z             },
2026-06-22T02:04:44.3269247Z             {
2026-06-22T02:04:44.3269405Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3269505Z               "line": 27
2026-06-22T02:04:44.3269609Z             },
2026-06-22T02:04:44.3269706Z             {
2026-06-22T02:04:44.3269852Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3269958Z               "line": 207
2026-06-22T02:04:44.3270049Z             },
2026-06-22T02:04:44.3270158Z             {
2026-06-22T02:04:44.3270302Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3270411Z               "line": 344
2026-06-22T02:04:44.3270506Z             },
2026-06-22T02:04:44.3270612Z             {
2026-06-22T02:04:44.3270754Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-22T02:04:44.3270867Z               "line": 59
2026-06-22T02:04:44.3270972Z             },
2026-06-22T02:04:44.3271061Z             {
2026-06-22T02:04:44.3271212Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3271314Z               "line": 41
2026-06-22T02:04:44.3271414Z             },
2026-06-22T02:04:44.3271518Z             {
2026-06-22T02:04:44.3271667Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.3271780Z               "line": 27
2026-06-22T02:04:44.3271881Z             },
2026-06-22T02:04:44.3271981Z             {
2026-06-22T02:04:44.3272128Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.3272234Z               "line": 119
2026-06-22T02:04:44.3272343Z             },
2026-06-22T02:04:44.3272429Z             {
2026-06-22T02:04:44.3272574Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.3272672Z               "line": 134
2026-06-22T02:04:44.3272869Z             },
2026-06-22T02:04:44.3272964Z             {
2026-06-22T02:04:44.3273092Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:04:44.3273208Z               "line": 139
2026-06-22T02:04:44.3273307Z             }
2026-06-22T02:04:44.3273405Z           ]
2026-06-22T02:04:44.3273596Z         },
2026-06-22T02:04:44.3273704Z         "int": {
2026-06-22T02:04:44.3273823Z           "complete": true,
2026-06-22T02:04:44.3273933Z           "evidence": [
2026-06-22T02:04:44.3274037Z             {
2026-06-22T02:04:44.3274176Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:04:44.3274276Z               "line": 145
2026-06-22T02:04:44.3274375Z             },
2026-06-22T02:04:44.3274477Z             {
2026-06-22T02:04:44.3274624Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3274733Z               "line": 665
2026-06-22T02:04:44.3274834Z             },
2026-06-22T02:04:44.3274929Z             {
2026-06-22T02:04:44.3275072Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3275173Z               "line": 964
2026-06-22T02:04:44.3275277Z             }
2026-06-22T02:04:44.3275377Z           ]
2026-06-22T02:04:44.3275473Z         },
2026-06-22T02:04:44.3275582Z         "unit": {
2026-06-22T02:04:44.3275682Z           "complete": true,
2026-06-22T02:04:44.3275793Z           "evidence": [
2026-06-22T02:04:44.3275887Z             {
2026-06-22T02:04:44.3276041Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3276146Z               "line": 1134
2026-06-22T02:04:44.3276244Z             },
2026-06-22T02:04:44.3276348Z             {
2026-06-22T02:04:44.3276493Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3276601Z               "line": 1521
2026-06-22T02:04:44.3276697Z             },
2026-06-22T02:04:44.3276802Z             {
2026-06-22T02:04:44.3276954Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T02:04:44.3277065Z               "line": 84
2026-06-22T02:04:44.3277165Z             },
2026-06-22T02:04:44.3277264Z             {
2026-06-22T02:04:44.3277394Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3277493Z               "line": 812
2026-06-22T02:04:44.3277593Z             },
2026-06-22T02:04:44.3277694Z             {
2026-06-22T02:04:44.3277832Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3277937Z               "line": 823
2026-06-22T02:04:44.3278038Z             },
2026-06-22T02:04:44.3278136Z             {
2026-06-22T02:04:44.3278275Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3278381Z               "line": 838
2026-06-22T02:04:44.3278489Z             },
2026-06-22T02:04:44.3278588Z             {
2026-06-22T02:04:44.3278736Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.3278830Z               "line": 166
2026-06-22T02:04:44.3278935Z             },
2026-06-22T02:04:44.3279111Z             {
2026-06-22T02:04:44.3279245Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.3279355Z               "line": 181
2026-06-22T02:04:44.3279454Z             },
2026-06-22T02:04:44.3279559Z             {
2026-06-22T02:04:44.3279693Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.3279802Z               "line": 214
2026-06-22T02:04:44.3279908Z             }
2026-06-22T02:04:44.3280012Z           ]
2026-06-22T02:04:44.3280098Z         }
2026-06-22T02:04:44.3280198Z       }
2026-06-22T02:04:44.3280299Z     },
2026-06-22T02:04:44.3280390Z     {
2026-06-22T02:04:44.3280499Z       "id": "REQ-INST-8",
2026-06-22T02:04:44.3280684Z       "title": "Remote-control mode distinct from local operation",
2026-06-22T02:04:44.3280794Z       "requiredStages": [
2026-06-22T02:04:44.3280901Z         "impl",
2026-06-22T02:04:44.3281003Z         "unit",
2026-06-22T02:04:44.3281109Z         "int"
2026-06-22T02:04:44.3281211Z       ],
2026-06-22T02:04:44.3281418Z       "stages": {
2026-06-22T02:04:44.3281523Z         "doc": {
2026-06-22T02:04:44.3281631Z           "complete": false,
2026-06-22T02:04:44.3281745Z           "evidence": []
2026-06-22T02:04:44.3281840Z         },
2026-06-22T02:04:44.3281951Z         "impl": {
2026-06-22T02:04:44.3282059Z           "complete": true,
2026-06-22T02:04:44.3282279Z           "evidence": [
2026-06-22T02:04:44.3282388Z             {
2026-06-22T02:04:44.3282532Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3282641Z               "line": 202
2026-06-22T02:04:44.3282731Z             },
2026-06-22T02:04:44.3282838Z             {
2026-06-22T02:04:44.3282965Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3283070Z               "line": 504
2026-06-22T02:04:44.3283180Z             },
2026-06-22T02:04:44.3283280Z             {
2026-06-22T02:04:44.3283414Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3283514Z               "line": 544
2026-06-22T02:04:44.3283618Z             },
2026-06-22T02:04:44.3283715Z             {
2026-06-22T02:04:44.3283867Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3283975Z               "line": 62
2026-06-22T02:04:44.3284075Z             }
2026-06-22T02:04:44.3284179Z           ]
2026-06-22T02:04:44.3284283Z         },
2026-06-22T02:04:44.3284392Z         "int": {
2026-06-22T02:04:44.3284498Z           "complete": true,
2026-06-22T02:04:44.3284612Z           "evidence": [
2026-06-22T02:04:44.3284702Z             {
2026-06-22T02:04:44.3284856Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3284964Z               "line": 415
2026-06-22T02:04:44.3285061Z             },
2026-06-22T02:04:44.3285160Z             {
2026-06-22T02:04:44.3285308Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3285418Z               "line": 1028
2026-06-22T02:04:44.3285518Z             }
2026-06-22T02:04:44.3285618Z           ]
2026-06-22T02:04:44.3285724Z         },
2026-06-22T02:04:44.3285823Z         "unit": {
2026-06-22T02:04:44.3285937Z           "complete": true,
2026-06-22T02:04:44.3286038Z           "evidence": [
2026-06-22T02:04:44.3286142Z             {
2026-06-22T02:04:44.3286286Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3286391Z               "line": 369
2026-06-22T02:04:44.3286495Z             },
2026-06-22T02:04:44.3286587Z             {
2026-06-22T02:04:44.3286725Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3286823Z               "line": 636
2026-06-22T02:04:44.3286933Z             },
2026-06-22T02:04:44.3287034Z             {
2026-06-22T02:04:44.3287166Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3287277Z               "line": 116
2026-06-22T02:04:44.3287372Z             },
2026-06-22T02:04:44.3287476Z             {
2026-06-22T02:04:44.3287615Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3287730Z               "line": 160
2026-06-22T02:04:44.3287833Z             }
2026-06-22T02:04:44.3287930Z           ]
2026-06-22T02:04:44.3288039Z         }
2026-06-22T02:04:44.3288148Z       }
2026-06-22T02:04:44.3288259Z     },
2026-06-22T02:04:44.3288368Z     {
2026-06-22T02:04:44.3288477Z       "id": "REQ-INST-9",
2026-06-22T02:04:44.3288697Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-22T02:04:44.3288807Z       "requiredStages": [
2026-06-22T02:04:44.3288918Z         "impl",
2026-06-22T02:04:44.3289097Z         "unit"
2026-06-22T02:04:44.3289206Z       ],
2026-06-22T02:04:44.3289310Z       "stages": {
2026-06-22T02:04:44.3289409Z         "doc": {
2026-06-22T02:04:44.3289528Z           "complete": false,
2026-06-22T02:04:44.3289630Z           "evidence": []
2026-06-22T02:04:44.3289733Z         },
2026-06-22T02:04:44.3289839Z         "impl": {
2026-06-22T02:04:44.3289948Z           "complete": true,
2026-06-22T02:04:44.3290057Z           "evidence": [
2026-06-22T02:04:44.3290267Z             {
2026-06-22T02:04:44.3290424Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3290526Z               "line": 449
2026-06-22T02:04:44.3290635Z             }
2026-06-22T02:04:44.3290735Z           ]
2026-06-22T02:04:44.3290836Z         },
2026-06-22T02:04:44.3291030Z         "int": {
2026-06-22T02:04:44.3291155Z           "complete": false,
2026-06-22T02:04:44.3291263Z           "evidence": []
2026-06-22T02:04:44.3291364Z         },
2026-06-22T02:04:44.3291475Z         "unit": {
2026-06-22T02:04:44.3291583Z           "complete": true,
2026-06-22T02:04:44.3291689Z           "evidence": [
2026-06-22T02:04:44.3291790Z             {
2026-06-22T02:04:44.3291935Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3292045Z               "line": 1397
2026-06-22T02:04:44.3292150Z             },
2026-06-22T02:04:44.3292257Z             {
2026-06-22T02:04:44.3292400Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3292501Z               "line": 1406
2026-06-22T02:04:44.3292600Z             },
2026-06-22T02:04:44.3292701Z             {
2026-06-22T02:04:44.3292845Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3292953Z               "line": 1422
2026-06-22T02:04:44.3293059Z             },
2026-06-22T02:04:44.3293169Z             {
2026-06-22T02:04:44.3293316Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3293417Z               "line": 1434
2026-06-22T02:04:44.3293516Z             },
2026-06-22T02:04:44.3293620Z             {
2026-06-22T02:04:44.3293750Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3293859Z               "line": 1454
2026-06-22T02:04:44.3293960Z             }
2026-06-22T02:04:44.3294060Z           ]
2026-06-22T02:04:44.3294164Z         }
2026-06-22T02:04:44.3294265Z       }
2026-06-22T02:04:44.3294366Z     },
2026-06-22T02:04:44.3294464Z     {
2026-06-22T02:04:44.3294573Z       "id": "REQ-INSTALL-1",
2026-06-22T02:04:44.3294790Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-22T02:04:44.3294890Z       "requiredStages": [
2026-06-22T02:04:44.3294991Z         "doc",
2026-06-22T02:04:44.3295101Z         "impl",
2026-06-22T02:04:44.3295204Z         "int"
2026-06-22T02:04:44.3295311Z       ],
2026-06-22T02:04:44.3295420Z       "stages": {
2026-06-22T02:04:44.3295519Z         "doc": {
2026-06-22T02:04:44.3295631Z           "complete": true,
2026-06-22T02:04:44.3295739Z           "evidence": [
2026-06-22T02:04:44.3295844Z             {
2026-06-22T02:04:44.3295964Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3296073Z               "line": 754
2026-06-22T02:04:44.3296178Z             }
2026-06-22T02:04:44.3296274Z           ]
2026-06-22T02:04:44.3296383Z         },
2026-06-22T02:04:44.3296488Z         "impl": {
2026-06-22T02:04:44.3296599Z           "complete": true,
2026-06-22T02:04:44.3296712Z           "evidence": [
2026-06-22T02:04:44.3296812Z             {
2026-06-22T02:04:44.3296956Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3297065Z               "line": 57
2026-06-22T02:04:44.3297180Z             },
2026-06-22T02:04:44.3297275Z             {
2026-06-22T02:04:44.3297412Z               "path": "installer/install.sh",
2026-06-22T02:04:44.3297527Z               "line": 52
2026-06-22T02:04:44.3297623Z             }
2026-06-22T02:04:44.3297726Z           ]
2026-06-22T02:04:44.3297822Z         },
2026-06-22T02:04:44.3297932Z         "int": {
2026-06-22T02:04:44.3298041Z           "complete": true,
2026-06-22T02:04:44.3298152Z           "evidence": [
2026-06-22T02:04:44.3298261Z             {
2026-06-22T02:04:44.3298398Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:04:44.3298500Z               "line": 21
2026-06-22T02:04:44.3298604Z             }
2026-06-22T02:04:44.3298708Z           ]
2026-06-22T02:04:44.3298806Z         },
2026-06-22T02:04:44.3298909Z         "unit": {
2026-06-22T02:04:44.3299206Z           "complete": false,
2026-06-22T02:04:44.3299315Z           "evidence": []
2026-06-22T02:04:44.3299420Z         }
2026-06-22T02:04:44.3299520Z       }
2026-06-22T02:04:44.3299623Z     },
2026-06-22T02:04:44.3299718Z     {
2026-06-22T02:04:44.3299828Z       "id": "REQ-INSTALL-10",
2026-06-22T02:04:44.3301358Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-22T02:04:44.3301481Z       "requiredStages": [
2026-06-22T02:04:44.3301580Z         "impl",
2026-06-22T02:04:44.3301682Z         "unit"
2026-06-22T02:04:44.3301777Z       ],
2026-06-22T02:04:44.3301886Z       "stages": {
2026-06-22T02:04:44.3301988Z         "doc": {
2026-06-22T02:04:44.3302106Z           "complete": false,
2026-06-22T02:04:44.3302201Z           "evidence": []
2026-06-22T02:04:44.3302307Z         },
2026-06-22T02:04:44.3302407Z         "impl": {
2026-06-22T02:04:44.3302524Z           "complete": true,
2026-06-22T02:04:44.3302638Z           "evidence": [
2026-06-22T02:04:44.3302742Z             {
2026-06-22T02:04:44.3302889Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3302994Z               "line": 191
2026-06-22T02:04:44.3303104Z             }
2026-06-22T02:04:44.3303203Z           ]
2026-06-22T02:04:44.3303300Z         },
2026-06-22T02:04:44.3303410Z         "int": {
2026-06-22T02:04:44.3303518Z           "complete": false,
2026-06-22T02:04:44.3303634Z           "evidence": []
2026-06-22T02:04:44.3303729Z         },
2026-06-22T02:04:44.3303837Z         "unit": {
2026-06-22T02:04:44.3303953Z           "complete": true,
2026-06-22T02:04:44.3304062Z           "evidence": [
2026-06-22T02:04:44.3304167Z             {
2026-06-22T02:04:44.3304324Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:04:44.3304429Z               "line": 211
2026-06-22T02:04:44.3304530Z             }
2026-06-22T02:04:44.3304626Z           ]
2026-06-22T02:04:44.3304724Z         }
2026-06-22T02:04:44.3304820Z       }
2026-06-22T02:04:44.3304926Z     },
2026-06-22T02:04:44.3305024Z     {
2026-06-22T02:04:44.3305133Z       "id": "REQ-INSTALL-11",
2026-06-22T02:04:44.3306958Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-22T02:04:44.3307082Z       "requiredStages": [
2026-06-22T02:04:44.3307192Z         "doc",
2026-06-22T02:04:44.3307286Z         "impl",
2026-06-22T02:04:44.3307387Z         "unit"
2026-06-22T02:04:44.3307488Z       ],
2026-06-22T02:04:44.3307591Z       "stages": {
2026-06-22T02:04:44.3307702Z         "doc": {
2026-06-22T02:04:44.3307812Z           "complete": true,
2026-06-22T02:04:44.3307915Z           "evidence": [
2026-06-22T02:04:44.3308010Z             {
2026-06-22T02:04:44.3308140Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3308254Z               "line": 138
2026-06-22T02:04:44.3308368Z             },
2026-06-22T02:04:44.3308474Z             {
2026-06-22T02:04:44.3308597Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.3308707Z               "line": 82
2026-06-22T02:04:44.3308807Z             }
2026-06-22T02:04:44.3308911Z           ]
2026-06-22T02:04:44.3309074Z         },
2026-06-22T02:04:44.3309183Z         "impl": {
2026-06-22T02:04:44.3309408Z           "complete": true,
2026-06-22T02:04:44.3309512Z           "evidence": [
2026-06-22T02:04:44.3309612Z             {
2026-06-22T02:04:44.3309756Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.3309865Z               "line": 223
2026-06-22T02:04:44.3309966Z             },
2026-06-22T02:04:44.3310165Z             {
2026-06-22T02:04:44.3310327Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3310426Z               "line": 99
2026-06-22T02:04:44.3310534Z             },
2026-06-22T02:04:44.3310644Z             {
2026-06-22T02:04:44.3310797Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.3310906Z               "line": 117
2026-06-22T02:04:44.3311007Z             },
2026-06-22T02:04:44.3311116Z             {
2026-06-22T02:04:44.3311264Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:04:44.3311364Z               "line": 332
2026-06-22T02:04:44.3311464Z             },
2026-06-22T02:04:44.3311569Z             {
2026-06-22T02:04:44.3311698Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.3311807Z               "line": 88
2026-06-22T02:04:44.3311913Z             },
2026-06-22T02:04:44.3312012Z             {
2026-06-22T02:04:44.3312155Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.3312261Z               "line": 104
2026-06-22T02:04:44.3312365Z             },
2026-06-22T02:04:44.3312465Z             {
2026-06-22T02:04:44.3312614Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3312717Z               "line": 297
2026-06-22T02:04:44.3312819Z             },
2026-06-22T02:04:44.3312929Z             {
2026-06-22T02:04:44.3313060Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3313175Z               "line": 332
2026-06-22T02:04:44.3313279Z             },
2026-06-22T02:04:44.3313377Z             {
2026-06-22T02:04:44.3313526Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3313631Z               "line": 523
2026-06-22T02:04:44.3313739Z             },
2026-06-22T02:04:44.3313845Z             {
2026-06-22T02:04:44.3313993Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3314107Z               "line": 546
2026-06-22T02:04:44.3314208Z             },
2026-06-22T02:04:44.3314317Z             {
2026-06-22T02:04:44.3314455Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3314570Z               "line": 561
2026-06-22T02:04:44.3314674Z             },
2026-06-22T02:04:44.3314785Z             {
2026-06-22T02:04:44.3314913Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.3315022Z               "line": 492
2026-06-22T02:04:44.3315133Z             }
2026-06-22T02:04:44.3315237Z           ]
2026-06-22T02:04:44.3315337Z         },
2026-06-22T02:04:44.3315443Z         "int": {
2026-06-22T02:04:44.3315566Z           "complete": false,
2026-06-22T02:04:44.3315679Z           "evidence": []
2026-06-22T02:04:44.3315779Z         },
2026-06-22T02:04:44.3315888Z         "unit": {
2026-06-22T02:04:44.3316001Z           "complete": true,
2026-06-22T02:04:44.3316116Z           "evidence": [
2026-06-22T02:04:44.3316217Z             {
2026-06-22T02:04:44.3316364Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3316474Z               "line": 799
2026-06-22T02:04:44.3316573Z             },
2026-06-22T02:04:44.3316668Z             {
2026-06-22T02:04:44.3316807Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3316916Z               "line": 811
2026-06-22T02:04:44.3317018Z             },
2026-06-22T02:04:44.3317127Z             {
2026-06-22T02:04:44.3317274Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3317376Z               "line": 820
2026-06-22T02:04:44.3317484Z             }
2026-06-22T02:04:44.3317589Z           ]
2026-06-22T02:04:44.3317710Z         }
2026-06-22T02:04:44.3317808Z       }
2026-06-22T02:04:44.3317995Z     },
2026-06-22T02:04:44.3318095Z     {
2026-06-22T02:04:44.3318209Z       "id": "REQ-INSTALL-12",
2026-06-22T02:04:44.3320925Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-22T02:04:44.3321190Z       "requiredStages": [
2026-06-22T02:04:44.3321295Z         "doc",
2026-06-22T02:04:44.3321404Z         "impl",
2026-06-22T02:04:44.3321509Z         "unit",
2026-06-22T02:04:44.3321615Z         "int"
2026-06-22T02:04:44.3321724Z       ],
2026-06-22T02:04:44.3321834Z       "stages": {
2026-06-22T02:04:44.3321939Z         "doc": {
2026-06-22T02:04:44.3322053Z           "complete": true,
2026-06-22T02:04:44.3322159Z           "evidence": [
2026-06-22T02:04:44.3322253Z             {
2026-06-22T02:04:44.3322381Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3322493Z               "line": 185
2026-06-22T02:04:44.3322596Z             }
2026-06-22T02:04:44.3322715Z           ]
2026-06-22T02:04:44.3322817Z         },
2026-06-22T02:04:44.3322930Z         "impl": {
2026-06-22T02:04:44.3323039Z           "complete": true,
2026-06-22T02:04:44.3323146Z           "evidence": [
2026-06-22T02:04:44.3323254Z             {
2026-06-22T02:04:44.3323408Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3323522Z               "line": 27
2026-06-22T02:04:44.3323616Z             },
2026-06-22T02:04:44.3323725Z             {
2026-06-22T02:04:44.3323858Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3323961Z               "line": 223
2026-06-22T02:04:44.3324071Z             },
2026-06-22T02:04:44.3324167Z             {
2026-06-22T02:04:44.3324299Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3324401Z               "line": 5677
2026-06-22T02:04:44.3324510Z             }
2026-06-22T02:04:44.3324609Z           ]
2026-06-22T02:04:44.3324716Z         },
2026-06-22T02:04:44.3324820Z         "int": {
2026-06-22T02:04:44.3324924Z           "complete": true,
2026-06-22T02:04:44.3325040Z           "evidence": [
2026-06-22T02:04:44.3325139Z             {
2026-06-22T02:04:44.3325292Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:04:44.3325398Z               "line": 19
2026-06-22T02:04:44.3325501Z             }
2026-06-22T02:04:44.3325597Z           ]
2026-06-22T02:04:44.3325693Z         },
2026-06-22T02:04:44.3325802Z         "unit": {
2026-06-22T02:04:44.3329265Z           "complete": true,
2026-06-22T02:04:44.3329407Z           "evidence": [
2026-06-22T02:04:44.3329512Z             {
2026-06-22T02:04:44.3329679Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3329798Z               "line": 395
2026-06-22T02:04:44.3329894Z             },
2026-06-22T02:04:44.3329989Z             {
2026-06-22T02:04:44.3330137Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3330242Z               "line": 421
2026-06-22T02:04:44.3330346Z             },
2026-06-22T02:04:44.3330437Z             {
2026-06-22T02:04:44.3330589Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3330699Z               "line": 440
2026-06-22T02:04:44.3330796Z             },
2026-06-22T02:04:44.3330895Z             {
2026-06-22T02:04:44.3331177Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3331281Z               "line": 475
2026-06-22T02:04:44.3331389Z             },
2026-06-22T02:04:44.3331490Z             {
2026-06-22T02:04:44.3331621Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3331822Z               "line": 8665
2026-06-22T02:04:44.3331921Z             }
2026-06-22T02:04:44.3332026Z           ]
2026-06-22T02:04:44.3332127Z         }
2026-06-22T02:04:44.3332222Z       }
2026-06-22T02:04:44.3332317Z     },
2026-06-22T02:04:44.3332414Z     {
2026-06-22T02:04:44.3332537Z       "id": "REQ-INSTALL-2",
2026-06-22T02:04:44.3332690Z       "title": "Marketplace-repackaging-friendly install",
2026-06-22T02:04:44.3332804Z       "requiredStages": [
2026-06-22T02:04:44.3332904Z         "doc"
2026-06-22T02:04:44.3333009Z       ],
2026-06-22T02:04:44.3333114Z       "stages": {
2026-06-22T02:04:44.3333213Z         "doc": {
2026-06-22T02:04:44.3333324Z           "complete": true,
2026-06-22T02:04:44.3333424Z           "evidence": [
2026-06-22T02:04:44.3333528Z             {
2026-06-22T02:04:44.3333644Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3333744Z               "line": 755
2026-06-22T02:04:44.3333843Z             }
2026-06-22T02:04:44.3333939Z           ]
2026-06-22T02:04:44.3334049Z         },
2026-06-22T02:04:44.3334153Z         "impl": {
2026-06-22T02:04:44.3334261Z           "complete": false,
2026-06-22T02:04:44.3334362Z           "evidence": []
2026-06-22T02:04:44.3334469Z         },
2026-06-22T02:04:44.3334569Z         "int": {
2026-06-22T02:04:44.3334674Z           "complete": false,
2026-06-22T02:04:44.3334784Z           "evidence": []
2026-06-22T02:04:44.3334883Z         },
2026-06-22T02:04:44.3334989Z         "unit": {
2026-06-22T02:04:44.3335085Z           "complete": false,
2026-06-22T02:04:44.3335193Z           "evidence": []
2026-06-22T02:04:44.3335300Z         }
2026-06-22T02:04:44.3335390Z       }
2026-06-22T02:04:44.3335494Z     },
2026-06-22T02:04:44.3335595Z     {
2026-06-22T02:04:44.3335714Z       "id": "REQ-INSTALL-3",
2026-06-22T02:04:44.3335885Z       "title": "Idempotent + interactive-optional first run",
2026-06-22T02:04:44.3336000Z       "requiredStages": [
2026-06-22T02:04:44.3336109Z         "impl",
2026-06-22T02:04:44.3336205Z         "int"
2026-06-22T02:04:44.3336315Z       ],
2026-06-22T02:04:44.3336419Z       "stages": {
2026-06-22T02:04:44.3336520Z         "doc": {
2026-06-22T02:04:44.3336630Z           "complete": false,
2026-06-22T02:04:44.3336747Z           "evidence": []
2026-06-22T02:04:44.3336847Z         },
2026-06-22T02:04:44.3336947Z         "impl": {
2026-06-22T02:04:44.3337064Z           "complete": true,
2026-06-22T02:04:44.3337169Z           "evidence": [
2026-06-22T02:04:44.3337280Z             {
2026-06-22T02:04:44.3337412Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3337523Z               "line": 100
2026-06-22T02:04:44.3337627Z             },
2026-06-22T02:04:44.3337727Z             {
2026-06-22T02:04:44.3337861Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3337966Z               "line": 111
2026-06-22T02:04:44.3338070Z             },
2026-06-22T02:04:44.3338171Z             {
2026-06-22T02:04:44.3338304Z               "path": "installer/install.sh",
2026-06-22T02:04:44.3338409Z               "line": 79
2026-06-22T02:04:44.3338501Z             }
2026-06-22T02:04:44.3338604Z           ]
2026-06-22T02:04:44.3338704Z         },
2026-06-22T02:04:44.3338810Z         "int": {
2026-06-22T02:04:44.3338915Z           "complete": true,
2026-06-22T02:04:44.3339087Z           "evidence": [
2026-06-22T02:04:44.3339201Z             {
2026-06-22T02:04:44.3339334Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:04:44.3339436Z               "line": 167
2026-06-22T02:04:44.3339530Z             }
2026-06-22T02:04:44.3339633Z           ]
2026-06-22T02:04:44.3339719Z         },
2026-06-22T02:04:44.3339825Z         "unit": {
2026-06-22T02:04:44.3339943Z           "complete": false,
2026-06-22T02:04:44.3340163Z           "evidence": []
2026-06-22T02:04:44.3340267Z         }
2026-06-22T02:04:44.3340368Z       }
2026-06-22T02:04:44.3340473Z     },
2026-06-22T02:04:44.3340573Z     {
2026-06-22T02:04:44.3340683Z       "id": "REQ-INSTALL-4",
2026-06-22T02:04:44.3341346Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-22T02:04:44.3341545Z       "requiredStages": [
2026-06-22T02:04:44.3341656Z         "impl",
2026-06-22T02:04:44.3341742Z         "unit"
2026-06-22T02:04:44.3341841Z       ],
2026-06-22T02:04:44.3341940Z       "stages": {
2026-06-22T02:04:44.3342050Z         "doc": {
2026-06-22T02:04:44.3342157Z           "complete": false,
2026-06-22T02:04:44.3342261Z           "evidence": []
2026-06-22T02:04:44.3342368Z         },
2026-06-22T02:04:44.3342458Z         "impl": {
2026-06-22T02:04:44.3342576Z           "complete": true,
2026-06-22T02:04:44.3342683Z           "evidence": [
2026-06-22T02:04:44.3342791Z             {
2026-06-22T02:04:44.3342959Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.3343059Z               "line": 165
2026-06-22T02:04:44.3343158Z             },
2026-06-22T02:04:44.3343264Z             {
2026-06-22T02:04:44.3343417Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3343526Z               "line": 29
2026-06-22T02:04:44.3343627Z             },
2026-06-22T02:04:44.3343726Z             {
2026-06-22T02:04:44.3343874Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3343975Z               "line": 288
2026-06-22T02:04:44.3344074Z             },
2026-06-22T02:04:44.3344174Z             {
2026-06-22T02:04:44.3344308Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3344422Z               "line": 356
2026-06-22T02:04:44.3344524Z             },
2026-06-22T02:04:44.3344614Z             {
2026-06-22T02:04:44.3344760Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3344864Z               "line": 386
2026-06-22T02:04:44.3344968Z             },
2026-06-22T02:04:44.3345072Z             {
2026-06-22T02:04:44.3345206Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3345321Z               "line": 434
2026-06-22T02:04:44.3345420Z             },
2026-06-22T02:04:44.3345526Z             {
2026-06-22T02:04:44.3345654Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3345763Z               "line": 5396
2026-06-22T02:04:44.3345869Z             }
2026-06-22T02:04:44.3345969Z           ]
2026-06-22T02:04:44.3346073Z         },
2026-06-22T02:04:44.3346170Z         "int": {
2026-06-22T02:04:44.3346288Z           "complete": false,
2026-06-22T02:04:44.3346397Z           "evidence": []
2026-06-22T02:04:44.3346499Z         },
2026-06-22T02:04:44.3346598Z         "unit": {
2026-06-22T02:04:44.3346708Z           "complete": true,
2026-06-22T02:04:44.3346814Z           "evidence": [
2026-06-22T02:04:44.3346913Z             {
2026-06-22T02:04:44.3347076Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.3347190Z               "line": 375
2026-06-22T02:04:44.3347298Z             },
2026-06-22T02:04:44.3347412Z             {
2026-06-22T02:04:44.3347559Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3347662Z               "line": 808
2026-06-22T02:04:44.3347758Z             },
2026-06-22T02:04:44.3347849Z             {
2026-06-22T02:04:44.3347996Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3348107Z               "line": 849
2026-06-22T02:04:44.3348212Z             },
2026-06-22T02:04:44.3348315Z             {
2026-06-22T02:04:44.3348455Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3348564Z               "line": 869
2026-06-22T02:04:44.3348674Z             },
2026-06-22T02:04:44.3348850Z             {
2026-06-22T02:04:44.3349032Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3349146Z               "line": 8403
2026-06-22T02:04:44.3349241Z             }
2026-06-22T02:04:44.3349347Z           ]
2026-06-22T02:04:44.3349437Z         }
2026-06-22T02:04:44.3349542Z       }
2026-06-22T02:04:44.3349733Z     },
2026-06-22T02:04:44.3349841Z     {
2026-06-22T02:04:44.3349957Z       "id": "REQ-INSTALL-5",
2026-06-22T02:04:44.3350480Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-22T02:04:44.3350594Z       "requiredStages": [
2026-06-22T02:04:44.3350695Z         "impl",
2026-06-22T02:04:44.3350804Z         "int"
2026-06-22T02:04:44.3350904Z       ],
2026-06-22T02:04:44.3351005Z       "stages": {
2026-06-22T02:04:44.3351110Z         "doc": {
2026-06-22T02:04:44.3351219Z           "complete": false,
2026-06-22T02:04:44.3351329Z           "evidence": []
2026-06-22T02:04:44.3351424Z         },
2026-06-22T02:04:44.3351529Z         "impl": {
2026-06-22T02:04:44.3351640Z           "complete": true,
2026-06-22T02:04:44.3351748Z           "evidence": [
2026-06-22T02:04:44.3351853Z             {
2026-06-22T02:04:44.3351987Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3352111Z               "line": 5
2026-06-22T02:04:44.3352206Z             },
2026-06-22T02:04:44.3352326Z             {
2026-06-22T02:04:44.3352453Z               "path": "installer/install.sh",
2026-06-22T02:04:44.3352562Z               "line": 6
2026-06-22T02:04:44.3352662Z             }
2026-06-22T02:04:44.3352751Z           ]
2026-06-22T02:04:44.3352856Z         },
2026-06-22T02:04:44.3352961Z         "int": {
2026-06-22T02:04:44.3353065Z           "complete": true,
2026-06-22T02:04:44.3353170Z           "evidence": [
2026-06-22T02:04:44.3353281Z             {
2026-06-22T02:04:44.3353437Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:04:44.3353548Z               "line": 22
2026-06-22T02:04:44.3353653Z             }
2026-06-22T02:04:44.3353747Z           ]
2026-06-22T02:04:44.3353853Z         },
2026-06-22T02:04:44.3353957Z         "unit": {
2026-06-22T02:04:44.3354071Z           "complete": false,
2026-06-22T02:04:44.3354177Z           "evidence": []
2026-06-22T02:04:44.3354286Z         }
2026-06-22T02:04:44.3354391Z       }
2026-06-22T02:04:44.3354488Z     },
2026-06-22T02:04:44.3354586Z     {
2026-06-22T02:04:44.3354691Z       "id": "REQ-INSTALL-6",
2026-06-22T02:04:44.3355951Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-22T02:04:44.3356076Z       "requiredStages": [
2026-06-22T02:04:44.3356167Z         "impl",
2026-06-22T02:04:44.3356266Z         "unit"
2026-06-22T02:04:44.3356362Z       ],
2026-06-22T02:04:44.3356472Z       "stages": {
2026-06-22T02:04:44.3356576Z         "doc": {
2026-06-22T02:04:44.3356691Z           "complete": false,
2026-06-22T02:04:44.3356796Z           "evidence": []
2026-06-22T02:04:44.3356900Z         },
2026-06-22T02:04:44.3357011Z         "impl": {
2026-06-22T02:04:44.3357116Z           "complete": true,
2026-06-22T02:04:44.3357220Z           "evidence": [
2026-06-22T02:04:44.3357321Z             {
2026-06-22T02:04:44.3357463Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3357568Z               "line": 61
2026-06-22T02:04:44.3357669Z             },
2026-06-22T02:04:44.3357774Z             {
2026-06-22T02:04:44.3357915Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.3358035Z               "line": 641
2026-06-22T02:04:44.3358137Z             },
2026-06-22T02:04:44.3358357Z             {
2026-06-22T02:04:44.3358514Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.3358618Z               "line": 191
2026-06-22T02:04:44.3358729Z             },
2026-06-22T02:04:44.3358823Z             {
2026-06-22T02:04:44.3359048Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.3359263Z               "line": 276
2026-06-22T02:04:44.3359363Z             },
2026-06-22T02:04:44.3359472Z             {
2026-06-22T02:04:44.3359607Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:04:44.3359715Z               "line": 43
2026-06-22T02:04:44.3359820Z             },
2026-06-22T02:04:44.3359917Z             {
2026-06-22T02:04:44.3360049Z               "path": "installer/install.sh",
2026-06-22T02:04:44.3360158Z               "line": 104
2026-06-22T02:04:44.3360260Z             }
2026-06-22T02:04:44.3360363Z           ]
2026-06-22T02:04:44.3360464Z         },
2026-06-22T02:04:44.3360566Z         "int": {
2026-06-22T02:04:44.3360683Z           "complete": false,
2026-06-22T02:04:44.3360796Z           "evidence": []
2026-06-22T02:04:44.3360897Z         },
2026-06-22T02:04:44.3361003Z         "unit": {
2026-06-22T02:04:44.3361111Z           "complete": true,
2026-06-22T02:04:44.3361212Z           "evidence": [
2026-06-22T02:04:44.3361312Z             {
2026-06-22T02:04:44.3361469Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:04:44.3361575Z               "line": 894
2026-06-22T02:04:44.3361675Z             }
2026-06-22T02:04:44.3361774Z           ]
2026-06-22T02:04:44.3361865Z         }
2026-06-22T02:04:44.3361969Z       }
2026-06-22T02:04:44.3362064Z     },
2026-06-22T02:04:44.3362166Z     {
2026-06-22T02:04:44.3362275Z       "id": "REQ-INSTALL-7",
2026-06-22T02:04:44.3363421Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-22T02:04:44.3363541Z       "requiredStages": [
2026-06-22T02:04:44.3363644Z         "impl"
2026-06-22T02:04:44.3363740Z       ],
2026-06-22T02:04:44.3363845Z       "stages": {
2026-06-22T02:04:44.3363949Z         "doc": {
2026-06-22T02:04:44.3364055Z           "complete": false,
2026-06-22T02:04:44.3364165Z           "evidence": []
2026-06-22T02:04:44.3364274Z         },
2026-06-22T02:04:44.3364375Z         "impl": {
2026-06-22T02:04:44.3364489Z           "complete": true,
2026-06-22T02:04:44.3364598Z           "evidence": [
2026-06-22T02:04:44.3364699Z             {
2026-06-22T02:04:44.3364827Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3364937Z               "line": 3920
2026-06-22T02:04:44.3365038Z             },
2026-06-22T02:04:44.3365133Z             {
2026-06-22T02:04:44.3365261Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3365372Z               "line": 157
2026-06-22T02:04:44.3365471Z             }
2026-06-22T02:04:44.3365571Z           ]
2026-06-22T02:04:44.3365672Z         },
2026-06-22T02:04:44.3365777Z         "int": {
2026-06-22T02:04:44.3365880Z           "complete": false,
2026-06-22T02:04:44.3365985Z           "evidence": []
2026-06-22T02:04:44.3366103Z         },
2026-06-22T02:04:44.3366202Z         "unit": {
2026-06-22T02:04:44.3366316Z           "complete": false,
2026-06-22T02:04:44.3366422Z           "evidence": []
2026-06-22T02:04:44.3366526Z         }
2026-06-22T02:04:44.3366622Z       }
2026-06-22T02:04:44.3366727Z     },
2026-06-22T02:04:44.3366826Z     {
2026-06-22T02:04:44.3366937Z       "id": "REQ-INSTALL-8",
2026-06-22T02:04:44.3368033Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-22T02:04:44.3368254Z       "requiredStages": [
2026-06-22T02:04:44.3368352Z         "impl"
2026-06-22T02:04:44.3368461Z       ],
2026-06-22T02:04:44.3368641Z       "stages": {
2026-06-22T02:04:44.3368745Z         "doc": {
2026-06-22T02:04:44.3368854Z           "complete": false,
2026-06-22T02:04:44.3369036Z           "evidence": []
2026-06-22T02:04:44.3369145Z         },
2026-06-22T02:04:44.3369246Z         "impl": {
2026-06-22T02:04:44.3369346Z           "complete": true,
2026-06-22T02:04:44.3369455Z           "evidence": [
2026-06-22T02:04:44.3369556Z             {
2026-06-22T02:04:44.3369684Z               "path": "installer/install.ps1",
2026-06-22T02:04:44.3369789Z               "line": 184
2026-06-22T02:04:44.3369894Z             },
2026-06-22T02:04:44.3369999Z             {
2026-06-22T02:04:44.3370128Z               "path": "installer/install.sh",
2026-06-22T02:04:44.3370237Z               "line": 121
2026-06-22T02:04:44.3370347Z             }
2026-06-22T02:04:44.3370433Z           ]
2026-06-22T02:04:44.3370538Z         },
2026-06-22T02:04:44.3370647Z         "int": {
2026-06-22T02:04:44.3370758Z           "complete": false,
2026-06-22T02:04:44.3370867Z           "evidence": []
2026-06-22T02:04:44.3370967Z         },
2026-06-22T02:04:44.3371068Z         "unit": {
2026-06-22T02:04:44.3371173Z           "complete": false,
2026-06-22T02:04:44.3371290Z           "evidence": []
2026-06-22T02:04:44.3371390Z         }
2026-06-22T02:04:44.3371476Z       }
2026-06-22T02:04:44.3371581Z     },
2026-06-22T02:04:44.3371676Z     {
2026-06-22T02:04:44.3371782Z       "id": "REQ-INSTALL-9",
2026-06-22T02:04:44.3372993Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-22T02:04:44.3373112Z       "requiredStages": [
2026-06-22T02:04:44.3373216Z         "doc",
2026-06-22T02:04:44.3373317Z         "impl",
2026-06-22T02:04:44.3373427Z         "unit"
2026-06-22T02:04:44.3373512Z       ],
2026-06-22T02:04:44.3373621Z       "stages": {
2026-06-22T02:04:44.3373725Z         "doc": {
2026-06-22T02:04:44.3373829Z           "complete": true,
2026-06-22T02:04:44.3373928Z           "evidence": [
2026-06-22T02:04:44.3374024Z             {
2026-06-22T02:04:44.3374130Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3374233Z               "line": 771
2026-06-22T02:04:44.3374334Z             }
2026-06-22T02:04:44.3374434Z           ]
2026-06-22T02:04:44.3374524Z         },
2026-06-22T02:04:44.3374630Z         "impl": {
2026-06-22T02:04:44.3374730Z           "complete": true,
2026-06-22T02:04:44.3374839Z           "evidence": [
2026-06-22T02:04:44.3374935Z             {
2026-06-22T02:04:44.3375063Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3375172Z               "line": 2535
2026-06-22T02:04:44.3375269Z             },
2026-06-22T02:04:44.3375373Z             {
2026-06-22T02:04:44.3375492Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3375603Z               "line": 2559
2026-06-22T02:04:44.3375698Z             }
2026-06-22T02:04:44.3375802Z           ]
2026-06-22T02:04:44.3375909Z         },
2026-06-22T02:04:44.3376003Z         "int": {
2026-06-22T02:04:44.3376108Z           "complete": false,
2026-06-22T02:04:44.3376209Z           "evidence": []
2026-06-22T02:04:44.3376314Z         },
2026-06-22T02:04:44.3376402Z         "unit": {
2026-06-22T02:04:44.3376511Z           "complete": true,
2026-06-22T02:04:44.3376621Z           "evidence": [
2026-06-22T02:04:44.3376719Z             {
2026-06-22T02:04:44.3376848Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3377057Z               "line": 7591
2026-06-22T02:04:44.3377157Z             },
2026-06-22T02:04:44.3377264Z             {
2026-06-22T02:04:44.3377382Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3377482Z               "line": 8433
2026-06-22T02:04:44.3377574Z             }
2026-06-22T02:04:44.3377768Z           ]
2026-06-22T02:04:44.3377869Z         }
2026-06-22T02:04:44.3377963Z       }
2026-06-22T02:04:44.3378049Z     },
2026-06-22T02:04:44.3378150Z     {
2026-06-22T02:04:44.3378259Z       "id": "REQ-KICK-1",
2026-06-22T02:04:44.3380788Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-22T02:04:44.3380926Z       "requiredStages": [
2026-06-22T02:04:44.3381037Z         "doc",
2026-06-22T02:04:44.3381136Z         "impl",
2026-06-22T02:04:44.3381241Z         "unit",
2026-06-22T02:04:44.3381333Z         "int"
2026-06-22T02:04:44.3381427Z       ],
2026-06-22T02:04:44.3381532Z       "stages": {
2026-06-22T02:04:44.3381633Z         "doc": {
2026-06-22T02:04:44.3381738Z           "complete": true,
2026-06-22T02:04:44.3381831Z           "evidence": [
2026-06-22T02:04:44.3381935Z             {
2026-06-22T02:04:44.3382041Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3382155Z               "line": 342
2026-06-22T02:04:44.3382250Z             }
2026-06-22T02:04:44.3382352Z           ]
2026-06-22T02:04:44.3382442Z         },
2026-06-22T02:04:44.3382532Z         "impl": {
2026-06-22T02:04:44.3382633Z           "complete": true,
2026-06-22T02:04:44.3382738Z           "evidence": [
2026-06-22T02:04:44.3382842Z             {
2026-06-22T02:04:44.3382986Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3383090Z               "line": 41
2026-06-22T02:04:44.3383195Z             },
2026-06-22T02:04:44.3383291Z             {
2026-06-22T02:04:44.3383419Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3383523Z               "line": 701
2026-06-22T02:04:44.3383616Z             }
2026-06-22T02:04:44.3383715Z           ]
2026-06-22T02:04:44.3383820Z         },
2026-06-22T02:04:44.3383921Z         "int": {
2026-06-22T02:04:44.3384029Z           "complete": true,
2026-06-22T02:04:44.3384133Z           "evidence": [
2026-06-22T02:04:44.3384238Z             {
2026-06-22T02:04:44.3384370Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3384474Z               "line": 916
2026-06-22T02:04:44.3384575Z             }
2026-06-22T02:04:44.3384671Z           ]
2026-06-22T02:04:44.3384760Z         },
2026-06-22T02:04:44.3384870Z         "unit": {
2026-06-22T02:04:44.3384975Z           "complete": true,
2026-06-22T02:04:44.3385080Z           "evidence": [
2026-06-22T02:04:44.3385170Z             {
2026-06-22T02:04:44.3385309Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3385418Z               "line": 205
2026-06-22T02:04:44.3385510Z             }
2026-06-22T02:04:44.3385614Z           ]
2026-06-22T02:04:44.3385700Z         }
2026-06-22T02:04:44.3385805Z       }
2026-06-22T02:04:44.3385905Z     },
2026-06-22T02:04:44.3386010Z     {
2026-06-22T02:04:44.3386129Z       "id": "REQ-MANIFEST-1",
2026-06-22T02:04:44.3386339Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-22T02:04:44.3386563Z       "requiredStages": [
2026-06-22T02:04:44.3386658Z         "doc",
2026-06-22T02:04:44.3386764Z         "impl",
2026-06-22T02:04:44.3386864Z         "unit"
2026-06-22T02:04:44.3386967Z       ],
2026-06-22T02:04:44.3387071Z       "stages": {
2026-06-22T02:04:44.3387172Z         "doc": {
2026-06-22T02:04:44.3387370Z           "complete": true,
2026-06-22T02:04:44.3387465Z           "evidence": [
2026-06-22T02:04:44.3387571Z             {
2026-06-22T02:04:44.3387679Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.3387786Z               "line": 19
2026-06-22T02:04:44.3387895Z             }
2026-06-22T02:04:44.3387984Z           ]
2026-06-22T02:04:44.3388091Z         },
2026-06-22T02:04:44.3388185Z         "impl": {
2026-06-22T02:04:44.3388285Z           "complete": true,
2026-06-22T02:04:44.3388391Z           "evidence": [
2026-06-22T02:04:44.3388486Z             {
2026-06-22T02:04:44.3388633Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3388744Z               "line": 18
2026-06-22T02:04:44.3388848Z             }
2026-06-22T02:04:44.3389016Z           ]
2026-06-22T02:04:44.3389112Z         },
2026-06-22T02:04:44.3389210Z         "int": {
2026-06-22T02:04:44.3389316Z           "complete": false,
2026-06-22T02:04:44.3389426Z           "evidence": []
2026-06-22T02:04:44.3389529Z         },
2026-06-22T02:04:44.3389633Z         "unit": {
2026-06-22T02:04:44.3389739Z           "complete": true,
2026-06-22T02:04:44.3389846Z           "evidence": [
2026-06-22T02:04:44.3389945Z             {
2026-06-22T02:04:44.3390075Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3390189Z               "line": 1029
2026-06-22T02:04:44.3390280Z             },
2026-06-22T02:04:44.3390385Z             {
2026-06-22T02:04:44.3390518Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3390629Z               "line": 1325
2026-06-22T02:04:44.3390723Z             },
2026-06-22T02:04:44.3390832Z             {
2026-06-22T02:04:44.3390958Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3391062Z               "line": 1337
2026-06-22T02:04:44.3391166Z             },
2026-06-22T02:04:44.3391263Z             {
2026-06-22T02:04:44.3391400Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3391510Z               "line": 1348
2026-06-22T02:04:44.3391616Z             },
2026-06-22T02:04:44.3391720Z             {
2026-06-22T02:04:44.3391854Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3391955Z               "line": 1365
2026-06-22T02:04:44.3392053Z             },
2026-06-22T02:04:44.3392159Z             {
2026-06-22T02:04:44.3392303Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3392406Z               "line": 1379
2026-06-22T02:04:44.3392510Z             },
2026-06-22T02:04:44.3392606Z             {
2026-06-22T02:04:44.3392735Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3392844Z               "line": 1495
2026-06-22T02:04:44.3392955Z             },
2026-06-22T02:04:44.3393054Z             {
2026-06-22T02:04:44.3393183Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3393288Z               "line": 1510
2026-06-22T02:04:44.3393387Z             },
2026-06-22T02:04:44.3393479Z             {
2026-06-22T02:04:44.3393607Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3393716Z               "line": 1621
2026-06-22T02:04:44.3393818Z             },
2026-06-22T02:04:44.3393908Z             {
2026-06-22T02:04:44.3394041Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3394142Z               "line": 1632
2026-06-22T02:04:44.3394247Z             }
2026-06-22T02:04:44.3394341Z           ]
2026-06-22T02:04:44.3394447Z         }
2026-06-22T02:04:44.3394547Z       }
2026-06-22T02:04:44.3394646Z     },
2026-06-22T02:04:44.3394745Z     {
2026-06-22T02:04:44.3394860Z       "id": "REQ-MANIFEST-2",
2026-06-22T02:04:44.3395512Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-22T02:04:44.3395625Z       "requiredStages": [
2026-06-22T02:04:44.3395726Z         "doc",
2026-06-22T02:04:44.3395930Z         "impl",
2026-06-22T02:04:44.3396026Z         "unit"
2026-06-22T02:04:44.3396127Z       ],
2026-06-22T02:04:44.3396231Z       "stages": {
2026-06-22T02:04:44.3396331Z         "doc": {
2026-06-22T02:04:44.3396441Z           "complete": true,
2026-06-22T02:04:44.3396551Z           "evidence": [
2026-06-22T02:04:44.3396655Z             {
2026-06-22T02:04:44.3396756Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3396856Z               "line": 75
2026-06-22T02:04:44.3396951Z             }
2026-06-22T02:04:44.3397043Z           ]
2026-06-22T02:04:44.3397133Z         },
2026-06-22T02:04:44.3397238Z         "impl": {
2026-06-22T02:04:44.3397343Z           "complete": true,
2026-06-22T02:04:44.3397452Z           "evidence": [
2026-06-22T02:04:44.3397560Z             {
2026-06-22T02:04:44.3397699Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3397797Z               "line": 82
2026-06-22T02:04:44.3397896Z             },
2026-06-22T02:04:44.3398002Z             {
2026-06-22T02:04:44.3398145Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3398244Z               "line": 15
2026-06-22T02:04:44.3398346Z             },
2026-06-22T02:04:44.3398446Z             {
2026-06-22T02:04:44.3398583Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3398684Z               "line": 65
2026-06-22T02:04:44.3398794Z             },
2026-06-22T02:04:44.3398893Z             {
2026-06-22T02:04:44.3399141Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3399246Z               "line": 83
2026-06-22T02:04:44.3399333Z             },
2026-06-22T02:04:44.3399431Z             {
2026-06-22T02:04:44.3399614Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3399718Z               "line": 183
2026-06-22T02:04:44.3399823Z             },
2026-06-22T02:04:44.3399925Z             {
2026-06-22T02:04:44.3400061Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3400170Z               "line": 527
2026-06-22T02:04:44.3400275Z             },
2026-06-22T02:04:44.3400374Z             {
2026-06-22T02:04:44.3400501Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3400607Z               "line": 553
2026-06-22T02:04:44.3400703Z             },
2026-06-22T02:04:44.3400806Z             {
2026-06-22T02:04:44.3400932Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3401041Z               "line": 671
2026-06-22T02:04:44.3401154Z             },
2026-06-22T02:04:44.3401284Z             {
2026-06-22T02:04:44.3401484Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3401604Z               "line": 696
2026-06-22T02:04:44.3401708Z             },
2026-06-22T02:04:44.3401803Z             {
2026-06-22T02:04:44.3401951Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3402056Z               "line": 719
2026-06-22T02:04:44.3402157Z             },
2026-06-22T02:04:44.3402261Z             {
2026-06-22T02:04:44.3402390Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3402501Z               "line": 734
2026-06-22T02:04:44.3402590Z             },
2026-06-22T02:04:44.3402690Z             {
2026-06-22T02:04:44.3402820Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3402933Z               "line": 5567
2026-06-22T02:04:44.3403023Z             },
2026-06-22T02:04:44.3403128Z             {
2026-06-22T02:04:44.3403252Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3403347Z               "line": 5581
2026-06-22T02:04:44.3403452Z             },
2026-06-22T02:04:44.3403652Z             {
2026-06-22T02:04:44.3403768Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3403877Z               "line": 5615
2026-06-22T02:04:44.3403971Z             }
2026-06-22T02:04:44.3404072Z           ]
2026-06-22T02:04:44.3404163Z         },
2026-06-22T02:04:44.3404258Z         "int": {
2026-06-22T02:04:44.3404473Z           "complete": false,
2026-06-22T02:04:44.3404573Z           "evidence": []
2026-06-22T02:04:44.3404668Z         },
2026-06-22T02:04:44.3404769Z         "unit": {
2026-06-22T02:04:44.3404873Z           "complete": true,
2026-06-22T02:04:44.3404978Z           "evidence": [
2026-06-22T02:04:44.3405075Z             {
2026-06-22T02:04:44.3405220Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.3405325Z               "line": 921
2026-06-22T02:04:44.3405420Z             },
2026-06-22T02:04:44.3405518Z             {
2026-06-22T02:04:44.3405666Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3405772Z               "line": 211
2026-06-22T02:04:44.3405880Z             },
2026-06-22T02:04:44.3405985Z             {
2026-06-22T02:04:44.3406120Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3406228Z               "line": 272
2026-06-22T02:04:44.3406320Z             },
2026-06-22T02:04:44.3406429Z             {
2026-06-22T02:04:44.3406562Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3406673Z               "line": 313
2026-06-22T02:04:44.3406773Z             },
2026-06-22T02:04:44.3406867Z             {
2026-06-22T02:04:44.3407007Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3407111Z               "line": 325
2026-06-22T02:04:44.3407210Z             },
2026-06-22T02:04:44.3407312Z             {
2026-06-22T02:04:44.3407449Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3407550Z               "line": 336
2026-06-22T02:04:44.3407646Z             },
2026-06-22T02:04:44.3407735Z             {
2026-06-22T02:04:44.3407865Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3407975Z               "line": 345
2026-06-22T02:04:44.3408078Z             },
2026-06-22T02:04:44.3408168Z             {
2026-06-22T02:04:44.3408301Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3408409Z               "line": 361
2026-06-22T02:04:44.3408514Z             },
2026-06-22T02:04:44.3408610Z             {
2026-06-22T02:04:44.3408748Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3408852Z               "line": 444
2026-06-22T02:04:44.3409020Z             },
2026-06-22T02:04:44.3409128Z             {
2026-06-22T02:04:44.3409259Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3409368Z               "line": 958
2026-06-22T02:04:44.3409468Z             },
2026-06-22T02:04:44.3409573Z             {
2026-06-22T02:04:44.3409701Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3413090Z               "line": 982
2026-06-22T02:04:44.3413227Z             },
2026-06-22T02:04:44.3413333Z             {
2026-06-22T02:04:44.3413493Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3413607Z               "line": 1008
2026-06-22T02:04:44.3413707Z             },
2026-06-22T02:04:44.3413822Z             {
2026-06-22T02:04:44.3413969Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3414075Z               "line": 1027
2026-06-22T02:04:44.3414179Z             },
2026-06-22T02:04:44.3414274Z             {
2026-06-22T02:04:44.3414413Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3414517Z               "line": 1058
2026-06-22T02:04:44.3414618Z             },
2026-06-22T02:04:44.3414718Z             {
2026-06-22T02:04:44.3414860Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.3414962Z               "line": 309
2026-06-22T02:04:44.3415066Z             },
2026-06-22T02:04:44.3415291Z             {
2026-06-22T02:04:44.3415423Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.3415534Z               "line": 606
2026-06-22T02:04:44.3415630Z             },
2026-06-22T02:04:44.3415728Z             {
2026-06-22T02:04:44.3415851Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3416055Z               "line": 8610
2026-06-22T02:04:44.3416154Z             },
2026-06-22T02:04:44.3416260Z             {
2026-06-22T02:04:44.3416379Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3416474Z               "line": 9558
2026-06-22T02:04:44.3416579Z             }
2026-06-22T02:04:44.3416675Z           ]
2026-06-22T02:04:44.3416789Z         }
2026-06-22T02:04:44.3416890Z       }
2026-06-22T02:04:44.3416989Z     },
2026-06-22T02:04:44.3417094Z     {
2026-06-22T02:04:44.3417209Z       "id": "REQ-MANIFEST-3",
2026-06-22T02:04:44.3417900Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-22T02:04:44.3418019Z       "requiredStages": [
2026-06-22T02:04:44.3418125Z         "doc",
2026-06-22T02:04:44.3418229Z         "impl",
2026-06-22T02:04:44.3418324Z         "unit"
2026-06-22T02:04:44.3418430Z       ],
2026-06-22T02:04:44.3418521Z       "stages": {
2026-06-22T02:04:44.3418624Z         "doc": {
2026-06-22T02:04:44.3418733Z           "complete": true,
2026-06-22T02:04:44.3418838Z           "evidence": [
2026-06-22T02:04:44.3419017Z             {
2026-06-22T02:04:44.3419122Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3419223Z               "line": 81
2026-06-22T02:04:44.3419317Z             }
2026-06-22T02:04:44.3419417Z           ]
2026-06-22T02:04:44.3419514Z         },
2026-06-22T02:04:44.3419622Z         "impl": {
2026-06-22T02:04:44.3419732Z           "complete": true,
2026-06-22T02:04:44.3419837Z           "evidence": [
2026-06-22T02:04:44.3419937Z             {
2026-06-22T02:04:44.3420081Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3420190Z               "line": 92
2026-06-22T02:04:44.3420285Z             },
2026-06-22T02:04:44.3420386Z             {
2026-06-22T02:04:44.3420533Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3420638Z               "line": 101
2026-06-22T02:04:44.3420735Z             },
2026-06-22T02:04:44.3420829Z             {
2026-06-22T02:04:44.3420967Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3421073Z               "line": 132
2026-06-22T02:04:44.3421172Z             },
2026-06-22T02:04:44.3421276Z             {
2026-06-22T02:04:44.3421409Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3421512Z               "line": 577
2026-06-22T02:04:44.3421612Z             },
2026-06-22T02:04:44.3421717Z             {
2026-06-22T02:04:44.3421846Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3421946Z               "line": 633
2026-06-22T02:04:44.3422042Z             },
2026-06-22T02:04:44.3422133Z             {
2026-06-22T02:04:44.3422265Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3422366Z               "line": 5628
2026-06-22T02:04:44.3422466Z             },
2026-06-22T02:04:44.3422565Z             {
2026-06-22T02:04:44.3422695Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3422800Z               "line": 5654
2026-06-22T02:04:44.3422900Z             }
2026-06-22T02:04:44.3423001Z           ]
2026-06-22T02:04:44.3423090Z         },
2026-06-22T02:04:44.3423195Z         "int": {
2026-06-22T02:04:44.3423306Z           "complete": false,
2026-06-22T02:04:44.3423415Z           "evidence": []
2026-06-22T02:04:44.3423510Z         },
2026-06-22T02:04:44.3423607Z         "unit": {
2026-06-22T02:04:44.3423715Z           "complete": true,
2026-06-22T02:04:44.3423815Z           "evidence": [
2026-06-22T02:04:44.3423922Z             {
2026-06-22T02:04:44.3424152Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3424258Z               "line": 371
2026-06-22T02:04:44.3424359Z             },
2026-06-22T02:04:44.3424462Z             {
2026-06-22T02:04:44.3424602Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3424806Z               "line": 429
2026-06-22T02:04:44.3424902Z             },
2026-06-22T02:04:44.3424997Z             {
2026-06-22T02:04:44.3425125Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3425236Z               "line": 1082
2026-06-22T02:04:44.3425330Z             },
2026-06-22T02:04:44.3425430Z             {
2026-06-22T02:04:44.3425546Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3425654Z               "line": 8703
2026-06-22T02:04:44.3425750Z             }
2026-06-22T02:04:44.3425851Z           ]
2026-06-22T02:04:44.3425955Z         }
2026-06-22T02:04:44.3426041Z       }
2026-06-22T02:04:44.3426142Z     },
2026-06-22T02:04:44.3426237Z     {
2026-06-22T02:04:44.3426340Z       "id": "REQ-MANIFEST-4",
2026-06-22T02:04:44.3427067Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-22T02:04:44.3427192Z       "requiredStages": [
2026-06-22T02:04:44.3427301Z         "doc",
2026-06-22T02:04:44.3427401Z         "impl",
2026-06-22T02:04:44.3427502Z         "unit"
2026-06-22T02:04:44.3427597Z       ],
2026-06-22T02:04:44.3427701Z       "stages": {
2026-06-22T02:04:44.3427803Z         "doc": {
2026-06-22T02:04:44.3427907Z           "complete": true,
2026-06-22T02:04:44.3428016Z           "evidence": [
2026-06-22T02:04:44.3428108Z             {
2026-06-22T02:04:44.3428217Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3428322Z               "line": 88
2026-06-22T02:04:44.3428428Z             }
2026-06-22T02:04:44.3428526Z           ]
2026-06-22T02:04:44.3428617Z         },
2026-06-22T02:04:44.3428728Z         "impl": {
2026-06-22T02:04:44.3428831Z           "complete": true,
2026-06-22T02:04:44.3429000Z           "evidence": [
2026-06-22T02:04:44.3429100Z             {
2026-06-22T02:04:44.3429246Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3429360Z               "line": 100
2026-06-22T02:04:44.3429459Z             },
2026-06-22T02:04:44.3429563Z             {
2026-06-22T02:04:44.3429697Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3429797Z               "line": 183
2026-06-22T02:04:44.3429901Z             },
2026-06-22T02:04:44.3429997Z             {
2026-06-22T02:04:44.3430135Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3430225Z               "line": 83
2026-06-22T02:04:44.3430327Z             },
2026-06-22T02:04:44.3430421Z             {
2026-06-22T02:04:44.3430554Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3430656Z               "line": 629
2026-06-22T02:04:44.3430764Z             },
2026-06-22T02:04:44.3430865Z             {
2026-06-22T02:04:44.3430999Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3431107Z               "line": 654
2026-06-22T02:04:44.3431208Z             }
2026-06-22T02:04:44.3431305Z           ]
2026-06-22T02:04:44.3431389Z         },
2026-06-22T02:04:44.3431494Z         "int": {
2026-06-22T02:04:44.3431610Z           "complete": false,
2026-06-22T02:04:44.3431713Z           "evidence": []
2026-06-22T02:04:44.3431803Z         },
2026-06-22T02:04:44.3431898Z         "unit": {
2026-06-22T02:04:44.3432007Z           "complete": true,
2026-06-22T02:04:44.3432111Z           "evidence": [
2026-06-22T02:04:44.3432215Z             {
2026-06-22T02:04:44.3432355Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3432454Z               "line": 1445
2026-06-22T02:04:44.3432549Z             },
2026-06-22T02:04:44.3432641Z             {
2026-06-22T02:04:44.3432889Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3432993Z               "line": 1478
2026-06-22T02:04:44.3433102Z             },
2026-06-22T02:04:44.3433204Z             {
2026-06-22T02:04:44.3433331Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3433528Z               "line": 988
2026-06-22T02:04:44.3433622Z             }
2026-06-22T02:04:44.3433717Z           ]
2026-06-22T02:04:44.3433818Z         }
2026-06-22T02:04:44.3433918Z       }
2026-06-22T02:04:44.3434018Z     },
2026-06-22T02:04:44.3434104Z     {
2026-06-22T02:04:44.3434214Z       "id": "REQ-MANIFEST-5",
2026-06-22T02:04:44.3437082Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-22T02:04:44.3437213Z       "requiredStages": [
2026-06-22T02:04:44.3437312Z         "doc",
2026-06-22T02:04:44.3437409Z         "impl",
2026-06-22T02:04:44.3437514Z         "unit"
2026-06-22T02:04:44.3437613Z       ],
2026-06-22T02:04:44.3437704Z       "stages": {
2026-06-22T02:04:44.3437810Z         "doc": {
2026-06-22T02:04:44.3437918Z           "complete": true,
2026-06-22T02:04:44.3438029Z           "evidence": [
2026-06-22T02:04:44.3438124Z             {
2026-06-22T02:04:44.3438233Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3438334Z               "line": 83
2026-06-22T02:04:44.3438434Z             }
2026-06-22T02:04:44.3438528Z           ]
2026-06-22T02:04:44.3438625Z         },
2026-06-22T02:04:44.3438730Z         "impl": {
2026-06-22T02:04:44.3438825Z           "complete": true,
2026-06-22T02:04:44.3438930Z           "evidence": [
2026-06-22T02:04:44.3439105Z             {
2026-06-22T02:04:44.3439245Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3439346Z               "line": 120
2026-06-22T02:04:44.3439444Z             }
2026-06-22T02:04:44.3439540Z           ]
2026-06-22T02:04:44.3439632Z         },
2026-06-22T02:04:44.3439739Z         "int": {
2026-06-22T02:04:44.3439848Z           "complete": false,
2026-06-22T02:04:44.3439949Z           "evidence": []
2026-06-22T02:04:44.3440047Z         },
2026-06-22T02:04:44.3440142Z         "unit": {
2026-06-22T02:04:44.3440252Z           "complete": true,
2026-06-22T02:04:44.3440353Z           "evidence": [
2026-06-22T02:04:44.3440456Z             {
2026-06-22T02:04:44.3440587Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:04:44.3440696Z               "line": 404
2026-06-22T02:04:44.3440800Z             },
2026-06-22T02:04:44.3440896Z             {
2026-06-22T02:04:44.3441025Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3441129Z               "line": 1155
2026-06-22T02:04:44.3441230Z             },
2026-06-22T02:04:44.3441324Z             {
2026-06-22T02:04:44.3441448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3441564Z               "line": 1184
2026-06-22T02:04:44.3441663Z             },
2026-06-22T02:04:44.3441749Z             {
2026-06-22T02:04:44.3441874Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3441982Z               "line": 1224
2026-06-22T02:04:44.3442189Z             },
2026-06-22T02:04:44.3442287Z             {
2026-06-22T02:04:44.3442424Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3442525Z               "line": 1239
2026-06-22T02:04:44.3442628Z             }
2026-06-22T02:04:44.3442828Z           ]
2026-06-22T02:04:44.3442919Z         }
2026-06-22T02:04:44.3443019Z       }
2026-06-22T02:04:44.3443114Z     },
2026-06-22T02:04:44.3443215Z     {
2026-06-22T02:04:44.3443328Z       "id": "REQ-MANIFEST-6",
2026-06-22T02:04:44.3445417Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-22T02:04:44.3445540Z       "requiredStages": [
2026-06-22T02:04:44.3445645Z         "doc",
2026-06-22T02:04:44.3445746Z         "unit"
2026-06-22T02:04:44.3445850Z       ],
2026-06-22T02:04:44.3445955Z       "stages": {
2026-06-22T02:04:44.3446061Z         "doc": {
2026-06-22T02:04:44.3446165Z           "complete": true,
2026-06-22T02:04:44.3446275Z           "evidence": [
2026-06-22T02:04:44.3446375Z             {
2026-06-22T02:04:44.3446489Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3446604Z               "line": 141
2026-06-22T02:04:44.3446699Z             }
2026-06-22T02:04:44.3446799Z           ]
2026-06-22T02:04:44.3446899Z         },
2026-06-22T02:04:44.3447005Z         "impl": {
2026-06-22T02:04:44.3447113Z           "complete": false,
2026-06-22T02:04:44.3447214Z           "evidence": []
2026-06-22T02:04:44.3447320Z         },
2026-06-22T02:04:44.3447419Z         "int": {
2026-06-22T02:04:44.3447532Z           "complete": false,
2026-06-22T02:04:44.3447632Z           "evidence": []
2026-06-22T02:04:44.3447736Z         },
2026-06-22T02:04:44.3447839Z         "unit": {
2026-06-22T02:04:44.3447940Z           "complete": true,
2026-06-22T02:04:44.3448041Z           "evidence": [
2026-06-22T02:04:44.3448140Z             {
2026-06-22T02:04:44.3448279Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.3448384Z               "line": 1261
2026-06-22T02:04:44.3448488Z             }
2026-06-22T02:04:44.3448580Z           ]
2026-06-22T02:04:44.3448669Z         }
2026-06-22T02:04:44.3448769Z       }
2026-06-22T02:04:44.3448871Z     },
2026-06-22T02:04:44.3449037Z     {
2026-06-22T02:04:44.3449142Z       "id": "REQ-MANIFEST-7",
2026-06-22T02:04:44.3452129Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-22T02:04:44.3452266Z       "requiredStages": [
2026-06-22T02:04:44.3452372Z         "doc",
2026-06-22T02:04:44.3452590Z         "impl",
2026-06-22T02:04:44.3452692Z         "unit"
2026-06-22T02:04:44.3452782Z       ],
2026-06-22T02:04:44.3452895Z       "stages": {
2026-06-22T02:04:44.3453004Z         "doc": {
2026-06-22T02:04:44.3453100Z           "complete": true,
2026-06-22T02:04:44.3453207Z           "evidence": [
2026-06-22T02:04:44.3453398Z             {
2026-06-22T02:04:44.3453521Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.3453621Z               "line": 35
2026-06-22T02:04:44.3453727Z             }
2026-06-22T02:04:44.3453827Z           ]
2026-06-22T02:04:44.3453927Z         },
2026-06-22T02:04:44.3454023Z         "impl": {
2026-06-22T02:04:44.3454118Z           "complete": true,
2026-06-22T02:04:44.3454227Z           "evidence": [
2026-06-22T02:04:44.3454324Z             {
2026-06-22T02:04:44.3454456Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3454561Z               "line": 54
2026-06-22T02:04:44.3454653Z             }
2026-06-22T02:04:44.3454756Z           ]
2026-06-22T02:04:44.3454847Z         },
2026-06-22T02:04:44.3454948Z         "int": {
2026-06-22T02:04:44.3455061Z           "complete": false,
2026-06-22T02:04:44.3455171Z           "evidence": []
2026-06-22T02:04:44.3455277Z         },
2026-06-22T02:04:44.3455372Z         "unit": {
2026-06-22T02:04:44.3455477Z           "complete": true,
2026-06-22T02:04:44.3455582Z           "evidence": [
2026-06-22T02:04:44.3455691Z             {
2026-06-22T02:04:44.3455828Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3455934Z               "line": 1638
2026-06-22T02:04:44.3456039Z             }
2026-06-22T02:04:44.3456134Z           ]
2026-06-22T02:04:44.3456239Z         }
2026-06-22T02:04:44.3456334Z       }
2026-06-22T02:04:44.3456439Z     },
2026-06-22T02:04:44.3456534Z     {
2026-06-22T02:04:44.3456654Z       "id": "REQ-MANIFEST-8",
2026-06-22T02:04:44.3458815Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-22T02:04:44.3459015Z       "requiredStages": [
2026-06-22T02:04:44.3459111Z         "doc",
2026-06-22T02:04:44.3459216Z         "impl",
2026-06-22T02:04:44.3459311Z         "unit",
2026-06-22T02:04:44.3459416Z         "int"
2026-06-22T02:04:44.3459516Z       ],
2026-06-22T02:04:44.3459621Z       "stages": {
2026-06-22T02:04:44.3459730Z         "doc": {
2026-06-22T02:04:44.3459826Z           "complete": true,
2026-06-22T02:04:44.3459935Z           "evidence": [
2026-06-22T02:04:44.3460026Z             {
2026-06-22T02:04:44.3460141Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3460245Z               "line": 184
2026-06-22T02:04:44.3460346Z             },
2026-06-22T02:04:44.3460446Z             {
2026-06-22T02:04:44.3460559Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.3460670Z               "line": 46
2026-06-22T02:04:44.3460766Z             }
2026-06-22T02:04:44.3460870Z           ]
2026-06-22T02:04:44.3460969Z         },
2026-06-22T02:04:44.3461069Z         "impl": {
2026-06-22T02:04:44.3461177Z           "complete": true,
2026-06-22T02:04:44.3461276Z           "evidence": [
2026-06-22T02:04:44.3461377Z             {
2026-06-22T02:04:44.3461506Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3461615Z               "line": 222
2026-06-22T02:04:44.3461716Z             },
2026-06-22T02:04:44.3461816Z             {
2026-06-22T02:04:44.3461949Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.3462155Z               "line": 306
2026-06-22T02:04:44.3462254Z             }
2026-06-22T02:04:44.3462345Z           ]
2026-06-22T02:04:44.3462449Z         },
2026-06-22T02:04:44.3462554Z         "int": {
2026-06-22T02:04:44.3462656Z           "complete": true,
2026-06-22T02:04:44.3462869Z           "evidence": [
2026-06-22T02:04:44.3462970Z             {
2026-06-22T02:04:44.3463116Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:04:44.3463218Z               "line": 18
2026-06-22T02:04:44.3463319Z             }
2026-06-22T02:04:44.3463426Z           ]
2026-06-22T02:04:44.3463521Z         },
2026-06-22T02:04:44.3463621Z         "unit": {
2026-06-22T02:04:44.3463725Z           "complete": true,
2026-06-22T02:04:44.3463829Z           "evidence": [
2026-06-22T02:04:44.3463934Z             {
2026-06-22T02:04:44.3464077Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3464177Z               "line": 1656
2026-06-22T02:04:44.3464278Z             },
2026-06-22T02:04:44.3464383Z             {
2026-06-22T02:04:44.3464510Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3464612Z               "line": 316
2026-06-22T02:04:44.3464716Z             },
2026-06-22T02:04:44.3464816Z             {
2026-06-22T02:04:44.3464964Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3465059Z               "line": 332
2026-06-22T02:04:44.3465164Z             },
2026-06-22T02:04:44.3465260Z             {
2026-06-22T02:04:44.3465393Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.3465489Z               "line": 345
2026-06-22T02:04:44.3465589Z             },
2026-06-22T02:04:44.3465694Z             {
2026-06-22T02:04:44.3465819Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.3465927Z               "line": 422
2026-06-22T02:04:44.3466027Z             },
2026-06-22T02:04:44.3466124Z             {
2026-06-22T02:04:44.3466252Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:04:44.3466355Z               "line": 436
2026-06-22T02:04:44.3466460Z             }
2026-06-22T02:04:44.3466561Z           ]
2026-06-22T02:04:44.3466660Z         }
2026-06-22T02:04:44.3466760Z       }
2026-06-22T02:04:44.3466856Z     },
2026-06-22T02:04:44.3466956Z     {
2026-06-22T02:04:44.3467070Z       "id": "REQ-MESH-1",
2026-06-22T02:04:44.3469218Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-22T02:04:44.3469336Z       "requiredStages": [
2026-06-22T02:04:44.3469438Z         "impl",
2026-06-22T02:04:44.3469537Z         "unit",
2026-06-22T02:04:44.3469637Z         "int"
2026-06-22T02:04:44.3469743Z       ],
2026-06-22T02:04:44.3469847Z       "stages": {
2026-06-22T02:04:44.3469952Z         "doc": {
2026-06-22T02:04:44.3470057Z           "complete": false,
2026-06-22T02:04:44.3470162Z           "evidence": []
2026-06-22T02:04:44.3470267Z         },
2026-06-22T02:04:44.3470367Z         "impl": {
2026-06-22T02:04:44.3470481Z           "complete": true,
2026-06-22T02:04:44.3470581Z           "evidence": [
2026-06-22T02:04:44.3470677Z             {
2026-06-22T02:04:44.3470815Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.3470925Z               "line": 922
2026-06-22T02:04:44.3471030Z             },
2026-06-22T02:04:44.3471129Z             {
2026-06-22T02:04:44.3471383Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3471481Z               "line": 38
2026-06-22T02:04:44.3471586Z             },
2026-06-22T02:04:44.3471681Z             {
2026-06-22T02:04:44.3471831Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3472033Z               "line": 161
2026-06-22T02:04:44.3472141Z             },
2026-06-22T02:04:44.3472243Z             {
2026-06-22T02:04:44.3472386Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3472504Z               "line": 206
2026-06-22T02:04:44.3472591Z             },
2026-06-22T02:04:44.3472681Z             {
2026-06-22T02:04:44.3472804Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3472896Z               "line": 57
2026-06-22T02:04:44.3472981Z             },
2026-06-22T02:04:44.3473067Z             {
2026-06-22T02:04:44.3473202Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3473301Z               "line": 24
2026-06-22T02:04:44.3473382Z             },
2026-06-22T02:04:44.3473468Z             {
2026-06-22T02:04:44.3473597Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3473691Z               "line": 142
2026-06-22T02:04:44.3473773Z             },
2026-06-22T02:04:44.3473855Z             {
2026-06-22T02:04:44.3473991Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3474072Z               "line": 162
2026-06-22T02:04:44.3474163Z             }
2026-06-22T02:04:44.3474248Z           ]
2026-06-22T02:04:44.3474336Z         },
2026-06-22T02:04:44.3474422Z         "int": {
2026-06-22T02:04:44.3474523Z           "complete": true,
2026-06-22T02:04:44.3474614Z           "evidence": [
2026-06-22T02:04:44.3474689Z             {
2026-06-22T02:04:44.3474819Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:04:44.3474914Z               "line": 67
2026-06-22T02:04:44.3475004Z             },
2026-06-22T02:04:44.3475090Z             {
2026-06-22T02:04:44.3475214Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:04:44.3475300Z               "line": 93
2026-06-22T02:04:44.3475381Z             },
2026-06-22T02:04:44.3475463Z             {
2026-06-22T02:04:44.3475586Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:04:44.3475676Z               "line": 117
2026-06-22T02:04:44.3475763Z             },
2026-06-22T02:04:44.3475849Z             {
2026-06-22T02:04:44.3475977Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:04:44.3476069Z               "line": 134
2026-06-22T02:04:44.3476150Z             }
2026-06-22T02:04:44.3476234Z           ]
2026-06-22T02:04:44.3476320Z         },
2026-06-22T02:04:44.3476402Z         "unit": {
2026-06-22T02:04:44.3476502Z           "complete": true,
2026-06-22T02:04:44.3476601Z           "evidence": [
2026-06-22T02:04:44.3476684Z             {
2026-06-22T02:04:44.3476812Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3476906Z               "line": 427
2026-06-22T02:04:44.3476996Z             },
2026-06-22T02:04:44.3477078Z             {
2026-06-22T02:04:44.3477211Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3477306Z               "line": 376
2026-06-22T02:04:44.3477393Z             },
2026-06-22T02:04:44.3477479Z             {
2026-06-22T02:04:44.3477611Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3477703Z               "line": 412
2026-06-22T02:04:44.3477788Z             },
2026-06-22T02:04:44.3477878Z             {
2026-06-22T02:04:44.3478008Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3478098Z               "line": 427
2026-06-22T02:04:44.3478183Z             },
2026-06-22T02:04:44.3478260Z             {
2026-06-22T02:04:44.3478380Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3478541Z               "line": 438
2026-06-22T02:04:44.3478623Z             },
2026-06-22T02:04:44.3478700Z             {
2026-06-22T02:04:44.3478822Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3478913Z               "line": 449
2026-06-22T02:04:44.3479057Z             },
2026-06-22T02:04:44.3479246Z             {
2026-06-22T02:04:44.3479383Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3479478Z               "line": 460
2026-06-22T02:04:44.3479563Z             },
2026-06-22T02:04:44.3479644Z             {
2026-06-22T02:04:44.3479773Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3479863Z               "line": 496
2026-06-22T02:04:44.3479950Z             },
2026-06-22T02:04:44.3480031Z             {
2026-06-22T02:04:44.3480154Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3480241Z               "line": 519
2026-06-22T02:04:44.3480322Z             },
2026-06-22T02:04:44.3480411Z             {
2026-06-22T02:04:44.3480531Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3480617Z               "line": 546
2026-06-22T02:04:44.3480703Z             }
2026-06-22T02:04:44.3480788Z           ]
2026-06-22T02:04:44.3480875Z         }
2026-06-22T02:04:44.3480965Z       }
2026-06-22T02:04:44.3481046Z     },
2026-06-22T02:04:44.3481131Z     {
2026-06-22T02:04:44.3481229Z       "id": "REQ-MESH-2",
2026-06-22T02:04:44.3483742Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-22T02:04:44.3483856Z       "requiredStages": [
2026-06-22T02:04:44.3483937Z         "impl",
2026-06-22T02:04:44.3484023Z         "unit",
2026-06-22T02:04:44.3484105Z         "int"
2026-06-22T02:04:44.3484195Z       ],
2026-06-22T02:04:44.3484276Z       "stages": {
2026-06-22T02:04:44.3484367Z         "doc": {
2026-06-22T02:04:44.3484458Z           "complete": false,
2026-06-22T02:04:44.3484542Z           "evidence": []
2026-06-22T02:04:44.3484627Z         },
2026-06-22T02:04:44.3484713Z         "impl": {
2026-06-22T02:04:44.3484813Z           "complete": true,
2026-06-22T02:04:44.3484911Z           "evidence": [
2026-06-22T02:04:44.3485001Z             {
2026-06-22T02:04:44.3485156Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.3485244Z               "line": 757
2026-06-22T02:04:44.3485335Z             },
2026-06-22T02:04:44.3485418Z             {
2026-06-22T02:04:44.3485545Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3485631Z               "line": 118
2026-06-22T02:04:44.3485723Z             },
2026-06-22T02:04:44.3485813Z             {
2026-06-22T02:04:44.3485921Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3486018Z               "line": 347
2026-06-22T02:04:44.3486104Z             },
2026-06-22T02:04:44.3486185Z             {
2026-06-22T02:04:44.3486294Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3486385Z               "line": 389
2026-06-22T02:04:44.3486461Z             },
2026-06-22T02:04:44.3486546Z             {
2026-06-22T02:04:44.3486667Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3486866Z               "line": 403
2026-06-22T02:04:44.3486958Z             },
2026-06-22T02:04:44.3487039Z             {
2026-06-22T02:04:44.3487162Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3487254Z               "line": 492
2026-06-22T02:04:44.3487335Z             },
2026-06-22T02:04:44.3487490Z             {
2026-06-22T02:04:44.3487609Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3487711Z               "line": 507
2026-06-22T02:04:44.3487794Z             },
2026-06-22T02:04:44.3487880Z             {
2026-06-22T02:04:44.3488005Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3488081Z               "line": 534
2026-06-22T02:04:44.3488171Z             },
2026-06-22T02:04:44.3488258Z             {
2026-06-22T02:04:44.3488392Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3488476Z               "line": 207
2026-06-22T02:04:44.3488563Z             },
2026-06-22T02:04:44.3488653Z             {
2026-06-22T02:04:44.3488777Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3488864Z               "line": 755
2026-06-22T02:04:44.3489020Z             },
2026-06-22T02:04:44.3489101Z             {
2026-06-22T02:04:44.3489236Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3489320Z               "line": 816
2026-06-22T02:04:44.3489406Z             },
2026-06-22T02:04:44.3489488Z             {
2026-06-22T02:04:44.3489617Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3489701Z               "line": 869
2026-06-22T02:04:44.3489786Z             },
2026-06-22T02:04:44.3489878Z             {
2026-06-22T02:04:44.3489999Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3490080Z               "line": 891
2026-06-22T02:04:44.3490161Z             },
2026-06-22T02:04:44.3490248Z             {
2026-06-22T02:04:44.3490357Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3490452Z               "line": 122
2026-06-22T02:04:44.3490534Z             },
2026-06-22T02:04:44.3490620Z             {
2026-06-22T02:04:44.3490733Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3490816Z               "line": 44
2026-06-22T02:04:44.3490901Z             },
2026-06-22T02:04:44.3490981Z             {
2026-06-22T02:04:44.3491097Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3491182Z               "line": 184
2026-06-22T02:04:44.3491259Z             },
2026-06-22T02:04:44.3491348Z             {
2026-06-22T02:04:44.3491459Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3491549Z               "line": 211
2026-06-22T02:04:44.3491635Z             },
2026-06-22T02:04:44.3491726Z             {
2026-06-22T02:04:44.3491845Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3491930Z               "line": 251
2026-06-22T02:04:44.3492021Z             },
2026-06-22T02:04:44.3492099Z             {
2026-06-22T02:04:44.3492216Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3492298Z               "line": 275
2026-06-22T02:04:44.3492389Z             },
2026-06-22T02:04:44.3492479Z             {
2026-06-22T02:04:44.3492588Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3492688Z               "line": 289
2026-06-22T02:04:44.3492773Z             },
2026-06-22T02:04:44.3492862Z             {
2026-06-22T02:04:44.3492975Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3493067Z               "line": 300
2026-06-22T02:04:44.3493167Z             },
2026-06-22T02:04:44.3493248Z             {
2026-06-22T02:04:44.3493358Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3493444Z               "line": 313
2026-06-22T02:04:44.3493529Z             }
2026-06-22T02:04:44.3493609Z           ]
2026-06-22T02:04:44.3493697Z         },
2026-06-22T02:04:44.3493910Z         "int": {
2026-06-22T02:04:44.3493992Z           "complete": true,
2026-06-22T02:04:44.3494083Z           "evidence": [
2026-06-22T02:04:44.3494168Z             {
2026-06-22T02:04:44.3494297Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T02:04:44.3494393Z               "line": 116
2026-06-22T02:04:44.3494578Z             },
2026-06-22T02:04:44.3494661Z             {
2026-06-22T02:04:44.3494788Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T02:04:44.3494874Z               "line": 181
2026-06-22T02:04:44.3494956Z             }
2026-06-22T02:04:44.3495037Z           ]
2026-06-22T02:04:44.3495126Z         },
2026-06-22T02:04:44.3495206Z         "unit": {
2026-06-22T02:04:44.3495307Z           "complete": true,
2026-06-22T02:04:44.3495396Z           "evidence": [
2026-06-22T02:04:44.3495485Z             {
2026-06-22T02:04:44.3495605Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3495701Z               "line": 999
2026-06-22T02:04:44.3495791Z             },
2026-06-22T02:04:44.3495872Z             {
2026-06-22T02:04:44.3495997Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3496087Z               "line": 1016
2026-06-22T02:04:44.3496177Z             },
2026-06-22T02:04:44.3496259Z             {
2026-06-22T02:04:44.3496392Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3496477Z               "line": 1024
2026-06-22T02:04:44.3496564Z             },
2026-06-22T02:04:44.3496650Z             {
2026-06-22T02:04:44.3496773Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3496864Z               "line": 1048
2026-06-22T02:04:44.3496945Z             },
2026-06-22T02:04:44.3497031Z             {
2026-06-22T02:04:44.3500588Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3500708Z               "line": 1499
2026-06-22T02:04:44.3500789Z             },
2026-06-22T02:04:44.3500874Z             {
2026-06-22T02:04:44.3501017Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3501104Z               "line": 347
2026-06-22T02:04:44.3501189Z             },
2026-06-22T02:04:44.3501274Z             {
2026-06-22T02:04:44.3501395Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3501490Z               "line": 370
2026-06-22T02:04:44.3501575Z             },
2026-06-22T02:04:44.3501657Z             {
2026-06-22T02:04:44.3501761Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3501856Z               "line": 407
2026-06-22T02:04:44.3501947Z             },
2026-06-22T02:04:44.3502024Z             {
2026-06-22T02:04:44.3502128Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3502209Z               "line": 431
2026-06-22T02:04:44.3502291Z             },
2026-06-22T02:04:44.3502373Z             {
2026-06-22T02:04:44.3502486Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3502581Z               "line": 483
2026-06-22T02:04:44.3502669Z             },
2026-06-22T02:04:44.3502752Z             {
2026-06-22T02:04:44.3502863Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3502949Z               "line": 499
2026-06-22T02:04:44.3503026Z             },
2026-06-22T02:04:44.3503110Z             {
2026-06-22T02:04:44.3503223Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3503315Z               "line": 514
2026-06-22T02:04:44.3503389Z             },
2026-06-22T02:04:44.3503479Z             {
2026-06-22T02:04:44.3503584Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3503680Z               "line": 531
2026-06-22T02:04:44.3503765Z             }
2026-06-22T02:04:44.3503850Z           ]
2026-06-22T02:04:44.3503933Z         }
2026-06-22T02:04:44.3504023Z       }
2026-06-22T02:04:44.3504108Z     },
2026-06-22T02:04:44.3504189Z     {
2026-06-22T02:04:44.3504281Z       "id": "REQ-MESH-3",
2026-06-22T02:04:44.3505975Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-22T02:04:44.3506318Z       "requiredStages": [
2026-06-22T02:04:44.3506407Z         "impl",
2026-06-22T02:04:44.3506500Z         "unit",
2026-06-22T02:04:44.3506590Z         "int"
2026-06-22T02:04:44.3506670Z       ],
2026-06-22T02:04:44.3506761Z       "stages": {
2026-06-22T02:04:44.3506847Z         "doc": {
2026-06-22T02:04:44.3506942Z           "complete": false,
2026-06-22T02:04:44.3507037Z           "evidence": []
2026-06-22T02:04:44.3507125Z         },
2026-06-22T02:04:44.3507214Z         "impl": {
2026-06-22T02:04:44.3507309Z           "complete": true,
2026-06-22T02:04:44.3507390Z           "evidence": [
2026-06-22T02:04:44.3507472Z             {
2026-06-22T02:04:44.3507610Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.3507705Z               "line": 641
2026-06-22T02:04:44.3507787Z             }
2026-06-22T02:04:44.3507877Z           ]
2026-06-22T02:04:44.3507953Z         },
2026-06-22T02:04:44.3508044Z         "int": {
2026-06-22T02:04:44.3508135Z           "complete": true,
2026-06-22T02:04:44.3508225Z           "evidence": [
2026-06-22T02:04:44.3508306Z             {
2026-06-22T02:04:44.3508436Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T02:04:44.3508530Z               "line": 373
2026-06-22T02:04:44.3508610Z             },
2026-06-22T02:04:44.3508700Z             {
2026-06-22T02:04:44.3508816Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T02:04:44.3508906Z               "line": 436
2026-06-22T02:04:44.3509068Z             }
2026-06-22T02:04:44.3509149Z           ]
2026-06-22T02:04:44.3509239Z         },
2026-06-22T02:04:44.3509325Z         "unit": {
2026-06-22T02:04:44.3509422Z           "complete": true,
2026-06-22T02:04:44.3509512Z           "evidence": [
2026-06-22T02:04:44.3509649Z             {
2026-06-22T02:04:44.3509755Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.3509850Z               "line": 910
2026-06-22T02:04:44.3509940Z             }
2026-06-22T02:04:44.3510022Z           ]
2026-06-22T02:04:44.3510108Z         }
2026-06-22T02:04:44.3510189Z       }
2026-06-22T02:04:44.3510274Z     },
2026-06-22T02:04:44.3510351Z     {
2026-06-22T02:04:44.3510441Z       "id": "REQ-MESH-4",
2026-06-22T02:04:44.3512618Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-22T02:04:44.3512732Z       "requiredStages": [
2026-06-22T02:04:44.3512827Z         "impl",
2026-06-22T02:04:44.3512918Z         "unit",
2026-06-22T02:04:44.3513036Z         "int"
2026-06-22T02:04:44.3513117Z       ],
2026-06-22T02:04:44.3513204Z       "stages": {
2026-06-22T02:04:44.3513290Z         "doc": {
2026-06-22T02:04:44.3513385Z           "complete": false,
2026-06-22T02:04:44.3513461Z           "evidence": []
2026-06-22T02:04:44.3513548Z         },
2026-06-22T02:04:44.3513741Z         "impl": {
2026-06-22T02:04:44.3513836Z           "complete": true,
2026-06-22T02:04:44.3513922Z           "evidence": [
2026-06-22T02:04:44.3514006Z             {
2026-06-22T02:04:44.3514140Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.3514226Z               "line": 33
2026-06-22T02:04:44.3514411Z             },
2026-06-22T02:04:44.3514498Z             {
2026-06-22T02:04:44.3514645Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3514730Z               "line": 68
2026-06-22T02:04:44.3514822Z             },
2026-06-22T02:04:44.3514941Z             {
2026-06-22T02:04:44.3515103Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3515207Z               "line": 111
2026-06-22T02:04:44.3515288Z             },
2026-06-22T02:04:44.3515383Z             {
2026-06-22T02:04:44.3515504Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3515598Z               "line": 462
2026-06-22T02:04:44.3515684Z             },
2026-06-22T02:04:44.3515762Z             {
2026-06-22T02:04:44.3515884Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3515970Z               "line": 711
2026-06-22T02:04:44.3516062Z             },
2026-06-22T02:04:44.3516143Z             {
2026-06-22T02:04:44.3516270Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3516360Z               "line": 725
2026-06-22T02:04:44.3516446Z             },
2026-06-22T02:04:44.3516539Z             {
2026-06-22T02:04:44.3516658Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.3516754Z               "line": 132
2026-06-22T02:04:44.3516840Z             },
2026-06-22T02:04:44.3516930Z             {
2026-06-22T02:04:44.3517055Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3517150Z               "line": 26
2026-06-22T02:04:44.3517240Z             },
2026-06-22T02:04:44.3517316Z             {
2026-06-22T02:04:44.3517445Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3517526Z               "line": 97
2026-06-22T02:04:44.3517616Z             },
2026-06-22T02:04:44.3517699Z             {
2026-06-22T02:04:44.3517817Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3517917Z               "line": 119
2026-06-22T02:04:44.3518004Z             },
2026-06-22T02:04:44.3518089Z             {
2026-06-22T02:04:44.3518213Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3518304Z               "line": 82
2026-06-22T02:04:44.3518390Z             },
2026-06-22T02:04:44.3518475Z             {
2026-06-22T02:04:44.3518590Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3518686Z               "line": 111
2026-06-22T02:04:44.3518775Z             },
2026-06-22T02:04:44.3518852Z             {
2026-06-22T02:04:44.3519029Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3519128Z               "line": 232
2026-06-22T02:04:44.3519217Z             },
2026-06-22T02:04:44.3519304Z             {
2026-06-22T02:04:44.3519409Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3519508Z               "line": 245
2026-06-22T02:04:44.3519590Z             },
2026-06-22T02:04:44.3519681Z             {
2026-06-22T02:04:44.3519795Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3519890Z               "line": 4665
2026-06-22T02:04:44.3519982Z             }
2026-06-22T02:04:44.3520063Z           ]
2026-06-22T02:04:44.3520147Z         },
2026-06-22T02:04:44.3520229Z         "int": {
2026-06-22T02:04:44.3520325Z           "complete": true,
2026-06-22T02:04:44.3520410Z           "evidence": [
2026-06-22T02:04:44.3520495Z             {
2026-06-22T02:04:44.3520616Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T02:04:44.3520701Z               "line": 98
2026-06-22T02:04:44.3520782Z             },
2026-06-22T02:04:44.3520879Z             {
2026-06-22T02:04:44.3521106Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T02:04:44.3521198Z               "line": 140
2026-06-22T02:04:44.3521278Z             }
2026-06-22T02:04:44.3521358Z           ]
2026-06-22T02:04:44.3521439Z         },
2026-06-22T02:04:44.3521525Z         "unit": {
2026-06-22T02:04:44.3521708Z           "complete": true,
2026-06-22T02:04:44.3521794Z           "evidence": [
2026-06-22T02:04:44.3521885Z             {
2026-06-22T02:04:44.3522014Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.3522104Z               "line": 178
2026-06-22T02:04:44.3522185Z             },
2026-06-22T02:04:44.3522271Z             {
2026-06-22T02:04:44.3522394Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.3522482Z               "line": 242
2026-06-22T02:04:44.3522567Z             },
2026-06-22T02:04:44.3522648Z             {
2026-06-22T02:04:44.3522782Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3522868Z               "line": 1079
2026-06-22T02:04:44.3523000Z             },
2026-06-22T02:04:44.3523077Z             {
2026-06-22T02:04:44.3523197Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3523282Z               "line": 1109
2026-06-22T02:04:44.3523363Z             },
2026-06-22T02:04:44.3523445Z             {
2026-06-22T02:04:44.3523558Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:04:44.3523649Z               "line": 1129
2026-06-22T02:04:44.3523736Z             },
2026-06-22T02:04:44.3523817Z             {
2026-06-22T02:04:44.3523954Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:04:44.3524036Z               "line": 602
2026-06-22T02:04:44.3524127Z             },
2026-06-22T02:04:44.3524212Z             {
2026-06-22T02:04:44.3524330Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3524420Z               "line": 148
2026-06-22T02:04:44.3524501Z             },
2026-06-22T02:04:44.3524585Z             {
2026-06-22T02:04:44.3524700Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3524791Z               "line": 169
2026-06-22T02:04:44.3524867Z             },
2026-06-22T02:04:44.3524957Z             {
2026-06-22T02:04:44.3525082Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3525158Z               "line": 181
2026-06-22T02:04:44.3525247Z             },
2026-06-22T02:04:44.3525334Z             {
2026-06-22T02:04:44.3525462Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:04:44.3525543Z               "line": 202
2026-06-22T02:04:44.3525639Z             },
2026-06-22T02:04:44.3525730Z             {
2026-06-22T02:04:44.3525835Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3525925Z               "line": 375
2026-06-22T02:04:44.3526012Z             },
2026-06-22T02:04:44.3526097Z             {
2026-06-22T02:04:44.3526215Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3526303Z               "line": 407
2026-06-22T02:04:44.3526393Z             },
2026-06-22T02:04:44.3526463Z             {
2026-06-22T02:04:44.3526578Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3526661Z               "line": 10052
2026-06-22T02:04:44.3526750Z             }
2026-06-22T02:04:44.3526835Z           ]
2026-06-22T02:04:44.3526920Z         }
2026-06-22T02:04:44.3527006Z       }
2026-06-22T02:04:44.3527090Z     },
2026-06-22T02:04:44.3527180Z     {
2026-06-22T02:04:44.3527271Z       "id": "REQ-MESH-5",
2026-06-22T02:04:44.3528654Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-22T02:04:44.3528860Z       "requiredStages": [
2026-06-22T02:04:44.3529030Z         "impl",
2026-06-22T02:04:44.3529117Z         "unit"
2026-06-22T02:04:44.3529198Z       ],
2026-06-22T02:04:44.3529288Z       "stages": {
2026-06-22T02:04:44.3529480Z         "doc": {
2026-06-22T02:04:44.3529584Z           "complete": false,
2026-06-22T02:04:44.3529678Z           "evidence": []
2026-06-22T02:04:44.3529758Z         },
2026-06-22T02:04:44.3529845Z         "impl": {
2026-06-22T02:04:44.3529932Z           "complete": true,
2026-06-22T02:04:44.3530021Z           "evidence": [
2026-06-22T02:04:44.3530102Z             {
2026-06-22T02:04:44.3530227Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3530326Z               "line": 61
2026-06-22T02:04:44.3530407Z             },
2026-06-22T02:04:44.3530490Z             {
2026-06-22T02:04:44.3530608Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3530698Z               "line": 109
2026-06-22T02:04:44.3530794Z             },
2026-06-22T02:04:44.3530880Z             {
2026-06-22T02:04:44.3530994Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3531075Z               "line": 104
2026-06-22T02:04:44.3531157Z             },
2026-06-22T02:04:44.3531232Z             {
2026-06-22T02:04:44.3531356Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.3531448Z               "line": 105
2026-06-22T02:04:44.3531524Z             },
2026-06-22T02:04:44.3531613Z             {
2026-06-22T02:04:44.3531738Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3531829Z               "line": 85
2026-06-22T02:04:44.3531904Z             },
2026-06-22T02:04:44.3531994Z             {
2026-06-22T02:04:44.3532118Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3532203Z               "line": 250
2026-06-22T02:04:44.3532287Z             },
2026-06-22T02:04:44.3532373Z             {
2026-06-22T02:04:44.3532503Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3532597Z               "line": 314
2026-06-22T02:04:44.3532678Z             },
2026-06-22T02:04:44.3532765Z             {
2026-06-22T02:04:44.3532889Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3532978Z               "line": 767
2026-06-22T02:04:44.3533061Z             },
2026-06-22T02:04:44.3533151Z             {
2026-06-22T02:04:44.3533260Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3533347Z               "line": 101
2026-06-22T02:04:44.3533437Z             },
2026-06-22T02:04:44.3533518Z             {
2026-06-22T02:04:44.3533632Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3533723Z               "line": 193
2026-06-22T02:04:44.3533804Z             }
2026-06-22T02:04:44.3533885Z           ]
2026-06-22T02:04:44.3533971Z         },
2026-06-22T02:04:44.3534058Z         "int": {
2026-06-22T02:04:44.3534151Z           "complete": false,
2026-06-22T02:04:44.3534232Z           "evidence": []
2026-06-22T02:04:44.3534320Z         },
2026-06-22T02:04:44.3534405Z         "unit": {
2026-06-22T02:04:44.3534500Z           "complete": true,
2026-06-22T02:04:44.3534582Z           "evidence": [
2026-06-22T02:04:44.3534668Z             {
2026-06-22T02:04:44.3534800Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3534895Z               "line": 1009
2026-06-22T02:04:44.3534976Z             },
2026-06-22T02:04:44.3535065Z             {
2026-06-22T02:04:44.3535188Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:04:44.3535269Z               "line": 462
2026-06-22T02:04:44.3535351Z             }
2026-06-22T02:04:44.3535436Z           ]
2026-06-22T02:04:44.3535512Z         }
2026-06-22T02:04:44.3535599Z       }
2026-06-22T02:04:44.3535684Z     },
2026-06-22T02:04:44.3535770Z     {
2026-06-22T02:04:44.3535860Z       "id": "REQ-MESH-6",
2026-06-22T02:04:44.3537197Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-22T02:04:44.3537371Z       "requiredStages": [
2026-06-22T02:04:44.3537465Z         "impl",
2026-06-22T02:04:44.3537562Z         "unit"
2026-06-22T02:04:44.3537646Z       ],
2026-06-22T02:04:44.3537731Z       "stages": {
2026-06-22T02:04:44.3537812Z         "doc": {
2026-06-22T02:04:44.3537913Z           "complete": false,
2026-06-22T02:04:44.3538003Z           "evidence": []
2026-06-22T02:04:44.3538084Z         },
2026-06-22T02:04:44.3538175Z         "impl": {
2026-06-22T02:04:44.3538260Z           "complete": true,
2026-06-22T02:04:44.3538355Z           "evidence": [
2026-06-22T02:04:44.3538436Z             {
2026-06-22T02:04:44.3538565Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3538651Z               "line": 4181
2026-06-22T02:04:44.3538732Z             }
2026-06-22T02:04:44.3538824Z           ]
2026-06-22T02:04:44.3538899Z         },
2026-06-22T02:04:44.3539070Z         "int": {
2026-06-22T02:04:44.3539163Z           "complete": false,
2026-06-22T02:04:44.3539262Z           "evidence": []
2026-06-22T02:04:44.3539352Z         },
2026-06-22T02:04:44.3539444Z         "unit": {
2026-06-22T02:04:44.3539543Z           "complete": true,
2026-06-22T02:04:44.3539629Z           "evidence": [
2026-06-22T02:04:44.3539715Z             {
2026-06-22T02:04:44.3539821Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3539919Z               "line": 10602
2026-06-22T02:04:44.3539996Z             },
2026-06-22T02:04:44.3540083Z             {
2026-06-22T02:04:44.3540187Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3540276Z               "line": 10629
2026-06-22T02:04:44.3540362Z             },
2026-06-22T02:04:44.3540444Z             {
2026-06-22T02:04:44.3540548Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3540629Z               "line": 10653
2026-06-22T02:04:44.3540720Z             }
2026-06-22T02:04:44.3540815Z           ]
2026-06-22T02:04:44.3540900Z         }
2026-06-22T02:04:44.3540981Z       }
2026-06-22T02:04:44.3541064Z     },
2026-06-22T02:04:44.3541149Z     {
2026-06-22T02:04:44.3541249Z       "id": "REQ-MIGRATE-1",
2026-06-22T02:04:44.3541426Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-22T02:04:44.3541530Z       "requiredStages": [],
2026-06-22T02:04:44.3541620Z       "stages": {
2026-06-22T02:04:44.3541703Z         "doc": {
2026-06-22T02:04:44.3541797Z           "complete": false,
2026-06-22T02:04:44.3541897Z           "evidence": []
2026-06-22T02:04:44.3541974Z         },
2026-06-22T02:04:44.3542069Z         "impl": {
2026-06-22T02:04:44.3542164Z           "complete": false,
2026-06-22T02:04:44.3542250Z           "evidence": []
2026-06-22T02:04:44.3542333Z         },
2026-06-22T02:04:44.3542418Z         "int": {
2026-06-22T02:04:44.3542512Z           "complete": false,
2026-06-22T02:04:44.3542607Z           "evidence": []
2026-06-22T02:04:44.3542692Z         },
2026-06-22T02:04:44.3542786Z         "unit": {
2026-06-22T02:04:44.3542890Z           "complete": false,
2026-06-22T02:04:44.3542977Z           "evidence": []
2026-06-22T02:04:44.3543063Z         }
2026-06-22T02:04:44.3543144Z       }
2026-06-22T02:04:44.3543229Z     },
2026-06-22T02:04:44.3543315Z     {
2026-06-22T02:04:44.3543420Z       "id": "REQ-MSG-1",
2026-06-22T02:04:44.3543853Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-22T02:04:44.3543950Z       "requiredStages": [
2026-06-22T02:04:44.3544040Z         "impl",
2026-06-22T02:04:44.3544125Z         "unit",
2026-06-22T02:04:44.3544312Z         "int"
2026-06-22T02:04:44.3544402Z       ],
2026-06-22T02:04:44.3544487Z       "stages": {
2026-06-22T02:04:44.3544575Z         "doc": {
2026-06-22T02:04:44.3544679Z           "complete": false,
2026-06-22T02:04:44.3544765Z           "evidence": []
2026-06-22T02:04:44.3544937Z         },
2026-06-22T02:04:44.3545022Z         "impl": {
2026-06-22T02:04:44.3545117Z           "complete": true,
2026-06-22T02:04:44.3545210Z           "evidence": [
2026-06-22T02:04:44.3545294Z             {
2026-06-22T02:04:44.3545426Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3545507Z               "line": 28
2026-06-22T02:04:44.3545588Z             },
2026-06-22T02:04:44.3545667Z             {
2026-06-22T02:04:44.3545791Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3545892Z               "line": 94
2026-06-22T02:04:44.3545973Z             },
2026-06-22T02:04:44.3546053Z             {
2026-06-22T02:04:44.3546164Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3546254Z               "line": 127
2026-06-22T02:04:44.3546335Z             },
2026-06-22T02:04:44.3546415Z             {
2026-06-22T02:04:44.3546526Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3546617Z               "line": 149
2026-06-22T02:04:44.3546706Z             },
2026-06-22T02:04:44.3546793Z             {
2026-06-22T02:04:44.3546907Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3546998Z               "line": 174
2026-06-22T02:04:44.3547088Z             },
2026-06-22T02:04:44.3547179Z             {
2026-06-22T02:04:44.3547293Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:04:44.3547389Z               "line": 18
2026-06-22T02:04:44.3547480Z             },
2026-06-22T02:04:44.3547574Z             {
2026-06-22T02:04:44.3547689Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.3547776Z               "line": 13
2026-06-22T02:04:44.3547875Z             },
2026-06-22T02:04:44.3547960Z             {
2026-06-22T02:04:44.3548079Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.3548164Z               "line": 62
2026-06-22T02:04:44.3548253Z             },
2026-06-22T02:04:44.3548339Z             {
2026-06-22T02:04:44.3548454Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3548549Z               "line": 13
2026-06-22T02:04:44.3548634Z             }
2026-06-22T02:04:44.3548721Z           ]
2026-06-22T02:04:44.3548806Z         },
2026-06-22T02:04:44.3548892Z         "int": {
2026-06-22T02:04:44.3549040Z           "complete": true,
2026-06-22T02:04:44.3549140Z           "evidence": [
2026-06-22T02:04:44.3549221Z             {
2026-06-22T02:04:44.3549360Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:04:44.3549446Z               "line": 9
2026-06-22T02:04:44.3549522Z             },
2026-06-22T02:04:44.3549607Z             {
2026-06-22T02:04:44.3549742Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:04:44.3549827Z               "line": 56
2026-06-22T02:04:44.3549907Z             },
2026-06-22T02:04:44.3549999Z             {
2026-06-22T02:04:44.3550126Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:04:44.3550217Z               "line": 113
2026-06-22T02:04:44.3550309Z             }
2026-06-22T02:04:44.3550395Z           ]
2026-06-22T02:04:44.3550474Z         },
2026-06-22T02:04:44.3550561Z         "unit": {
2026-06-22T02:04:44.3550657Z           "complete": true,
2026-06-22T02:04:44.3550742Z           "evidence": [
2026-06-22T02:04:44.3550822Z             {
2026-06-22T02:04:44.3550946Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3551037Z               "line": 203
2026-06-22T02:04:44.3551113Z             },
2026-06-22T02:04:44.3551203Z             {
2026-06-22T02:04:44.3551309Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3551405Z               "line": 232
2026-06-22T02:04:44.3551581Z             },
2026-06-22T02:04:44.3551671Z             {
2026-06-22T02:04:44.3551789Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3551876Z               "line": 277
2026-06-22T02:04:44.3551963Z             },
2026-06-22T02:04:44.3552043Z             {
2026-06-22T02:04:44.3552268Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3552352Z               "line": 300
2026-06-22T02:04:44.3552438Z             },
2026-06-22T02:04:44.3552535Z             {
2026-06-22T02:04:44.3552639Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:04:44.3552724Z               "line": 325
2026-06-22T02:04:44.3552806Z             },
2026-06-22T02:04:44.3552898Z             {
2026-06-22T02:04:44.3553010Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:04:44.3553095Z               "line": 204
2026-06-22T02:04:44.3553186Z             },
2026-06-22T02:04:44.3553267Z             {
2026-06-22T02:04:44.3553379Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:04:44.3553464Z               "line": 237
2026-06-22T02:04:44.3553551Z             },
2026-06-22T02:04:44.3553638Z             {
2026-06-22T02:04:44.3553755Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:04:44.3553842Z               "line": 251
2026-06-22T02:04:44.3553928Z             },
2026-06-22T02:04:44.3554004Z             {
2026-06-22T02:04:44.3554113Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:04:44.3554214Z               "line": 263
2026-06-22T02:04:44.3554300Z             },
2026-06-22T02:04:44.3554390Z             {
2026-06-22T02:04:44.3554501Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.3554586Z               "line": 162
2026-06-22T02:04:44.3554681Z             },
2026-06-22T02:04:44.3554762Z             {
2026-06-22T02:04:44.3554872Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:04:44.3554958Z               "line": 242
2026-06-22T02:04:44.3555038Z             },
2026-06-22T02:04:44.3555121Z             {
2026-06-22T02:04:44.3555220Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3555320Z               "line": 134
2026-06-22T02:04:44.3555402Z             },
2026-06-22T02:04:44.3555492Z             {
2026-06-22T02:04:44.3555606Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3555697Z               "line": 153
2026-06-22T02:04:44.3555779Z             }
2026-06-22T02:04:44.3555859Z           ]
2026-06-22T02:04:44.3555953Z         }
2026-06-22T02:04:44.3556039Z       }
2026-06-22T02:04:44.3556120Z     },
2026-06-22T02:04:44.3556204Z     {
2026-06-22T02:04:44.3556303Z       "id": "REQ-MSG-2",
2026-06-22T02:04:44.3556580Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-22T02:04:44.3556680Z       "requiredStages": [
2026-06-22T02:04:44.3556772Z         "impl",
2026-06-22T02:04:44.3556857Z         "unit"
2026-06-22T02:04:44.3556947Z       ],
2026-06-22T02:04:44.3557039Z       "stages": {
2026-06-22T02:04:44.3557124Z         "doc": {
2026-06-22T02:04:44.3557228Z           "complete": false,
2026-06-22T02:04:44.3557315Z           "evidence": []
2026-06-22T02:04:44.3557396Z         },
2026-06-22T02:04:44.3557482Z         "impl": {
2026-06-22T02:04:44.3557581Z           "complete": true,
2026-06-22T02:04:44.3557673Z           "evidence": [
2026-06-22T02:04:44.3557759Z             {
2026-06-22T02:04:44.3557863Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3557949Z               "line": 11
2026-06-22T02:04:44.3558040Z             },
2026-06-22T02:04:44.3558125Z             {
2026-06-22T02:04:44.3558234Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:04:44.3558322Z               "line": 8
2026-06-22T02:04:44.3558407Z             }
2026-06-22T02:04:44.3558496Z           ]
2026-06-22T02:04:44.3558582Z         },
2026-06-22T02:04:44.3558667Z         "int": {
2026-06-22T02:04:44.3558757Z           "complete": false,
2026-06-22T02:04:44.3558927Z           "evidence": []
2026-06-22T02:04:44.3559095Z         },
2026-06-22T02:04:44.3559184Z         "unit": {
2026-06-22T02:04:44.3559281Z           "complete": true,
2026-06-22T02:04:44.3559367Z           "evidence": [
2026-06-22T02:04:44.3559452Z             {
2026-06-22T02:04:44.3559667Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3559763Z               "line": 7717
2026-06-22T02:04:44.3559847Z             },
2026-06-22T02:04:44.3559930Z             {
2026-06-22T02:04:44.3560038Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3560119Z               "line": 7759
2026-06-22T02:04:44.3560210Z             },
2026-06-22T02:04:44.3560283Z             {
2026-06-22T02:04:44.3560392Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3560487Z               "line": 7808
2026-06-22T02:04:44.3560573Z             },
2026-06-22T02:04:44.3560659Z             {
2026-06-22T02:04:44.3560759Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3560860Z               "line": 7831
2026-06-22T02:04:44.3560941Z             },
2026-06-22T02:04:44.3561025Z             {
2026-06-22T02:04:44.3561131Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3561217Z               "line": 9807
2026-06-22T02:04:44.3561307Z             },
2026-06-22T02:04:44.3561392Z             {
2026-06-22T02:04:44.3561497Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3561578Z               "line": 9816
2026-06-22T02:04:44.3561664Z             },
2026-06-22T02:04:44.3561749Z             {
2026-06-22T02:04:44.3561854Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3561950Z               "line": 9830
2026-06-22T02:04:44.3562025Z             }
2026-06-22T02:04:44.3562106Z           ]
2026-06-22T02:04:44.3562189Z         }
2026-06-22T02:04:44.3562274Z       }
2026-06-22T02:04:44.3562354Z     },
2026-06-22T02:04:44.3562436Z     {
2026-06-22T02:04:44.3562542Z       "id": "REQ-MSG-3",
2026-06-22T02:04:44.3562917Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-22T02:04:44.3563013Z       "requiredStages": [
2026-06-22T02:04:44.3563095Z         "impl",
2026-06-22T02:04:44.3563181Z         "unit",
2026-06-22T02:04:44.3563260Z         "int"
2026-06-22T02:04:44.3563346Z       ],
2026-06-22T02:04:44.3563429Z       "stages": {
2026-06-22T02:04:44.3563515Z         "doc": {
2026-06-22T02:04:44.3563613Z           "complete": false,
2026-06-22T02:04:44.3563698Z           "evidence": []
2026-06-22T02:04:44.3563789Z         },
2026-06-22T02:04:44.3563878Z         "impl": {
2026-06-22T02:04:44.3563968Z           "complete": true,
2026-06-22T02:04:44.3564049Z           "evidence": [
2026-06-22T02:04:44.3564131Z             {
2026-06-22T02:04:44.3564254Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:04:44.3564334Z               "line": 19
2026-06-22T02:04:44.3564426Z             },
2026-06-22T02:04:44.3564522Z             {
2026-06-22T02:04:44.3564626Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3564712Z               "line": 21
2026-06-22T02:04:44.3564793Z             },
2026-06-22T02:04:44.3564879Z             {
2026-06-22T02:04:44.3564993Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3565085Z               "line": 48
2026-06-22T02:04:44.3565180Z             },
2026-06-22T02:04:44.3565260Z             {
2026-06-22T02:04:44.3565371Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3565460Z               "line": 174
2026-06-22T02:04:44.3565546Z             }
2026-06-22T02:04:44.3565632Z           ]
2026-06-22T02:04:44.3565715Z         },
2026-06-22T02:04:44.3565799Z         "int": {
2026-06-22T02:04:44.3565889Z           "complete": true,
2026-06-22T02:04:44.3565981Z           "evidence": [
2026-06-22T02:04:44.3566067Z             {
2026-06-22T02:04:44.3566209Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:04:44.3566405Z               "line": 10
2026-06-22T02:04:44.3566494Z             },
2026-06-22T02:04:44.3566584Z             {
2026-06-22T02:04:44.3566717Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:04:44.3566816Z               "line": 56
2026-06-22T02:04:44.3566969Z             }
2026-06-22T02:04:44.3567051Z           ]
2026-06-22T02:04:44.3567136Z         },
2026-06-22T02:04:44.3567226Z         "unit": {
2026-06-22T02:04:44.3567322Z           "complete": true,
2026-06-22T02:04:44.3567408Z           "evidence": [
2026-06-22T02:04:44.3567498Z             {
2026-06-22T02:04:44.3567599Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3567689Z               "line": 228
2026-06-22T02:04:44.3567774Z             },
2026-06-22T02:04:44.3567860Z             {
2026-06-22T02:04:44.3567970Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3568061Z               "line": 247
2026-06-22T02:04:44.3568151Z             },
2026-06-22T02:04:44.3568233Z             {
2026-06-22T02:04:44.3568347Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3568432Z               "line": 270
2026-06-22T02:04:44.3568524Z             }
2026-06-22T02:04:44.3568600Z           ]
2026-06-22T02:04:44.3568680Z         }
2026-06-22T02:04:44.3568767Z       }
2026-06-22T02:04:44.3568848Z     },
2026-06-22T02:04:44.3568934Z     {
2026-06-22T02:04:44.3569104Z       "id": "REQ-MSG-4",
2026-06-22T02:04:44.3569927Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-22T02:04:44.3570041Z       "requiredStages": [
2026-06-22T02:04:44.3570126Z         "impl",
2026-06-22T02:04:44.3570213Z         "unit",
2026-06-22T02:04:44.3570294Z         "int"
2026-06-22T02:04:44.3570383Z       ],
2026-06-22T02:04:44.3570471Z       "stages": {
2026-06-22T02:04:44.3570556Z         "doc": {
2026-06-22T02:04:44.3574023Z           "complete": false,
2026-06-22T02:04:44.3574149Z           "evidence": []
2026-06-22T02:04:44.3574235Z         },
2026-06-22T02:04:44.3574321Z         "impl": {
2026-06-22T02:04:44.3574434Z           "complete": true,
2026-06-22T02:04:44.3574528Z           "evidence": [
2026-06-22T02:04:44.3574609Z             {
2026-06-22T02:04:44.3574739Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3574833Z               "line": 19
2026-06-22T02:04:44.3574919Z             },
2026-06-22T02:04:44.3575025Z             {
2026-06-22T02:04:44.3575191Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3575321Z               "line": 46
2026-06-22T02:04:44.3575396Z             },
2026-06-22T02:04:44.3575491Z             {
2026-06-22T02:04:44.3575616Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3575716Z               "line": 532
2026-06-22T02:04:44.3575805Z             },
2026-06-22T02:04:44.3575921Z             {
2026-06-22T02:04:44.3576025Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3576106Z               "line": 3110
2026-06-22T02:04:44.3576197Z             }
2026-06-22T02:04:44.3576284Z           ]
2026-06-22T02:04:44.3576382Z         },
2026-06-22T02:04:44.3576464Z         "int": {
2026-06-22T02:04:44.3576565Z           "complete": true,
2026-06-22T02:04:44.3576660Z           "evidence": [
2026-06-22T02:04:44.3576750Z             {
2026-06-22T02:04:44.3576880Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:04:44.3576970Z               "line": 98
2026-06-22T02:04:44.3577059Z             },
2026-06-22T02:04:44.3577144Z             {
2026-06-22T02:04:44.3577273Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:04:44.3577367Z               "line": 128
2026-06-22T02:04:44.3577456Z             }
2026-06-22T02:04:44.3577548Z           ]
2026-06-22T02:04:44.3577795Z         },
2026-06-22T02:04:44.3577896Z         "unit": {
2026-06-22T02:04:44.3577973Z           "complete": true,
2026-06-22T02:04:44.3578072Z           "evidence": [
2026-06-22T02:04:44.3578159Z             {
2026-06-22T02:04:44.3578263Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3578454Z               "line": 68
2026-06-22T02:04:44.3578535Z             },
2026-06-22T02:04:44.3578621Z             {
2026-06-22T02:04:44.3578735Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3578822Z               "line": 79
2026-06-22T02:04:44.3579054Z             },
2026-06-22T02:04:44.3579137Z             {
2026-06-22T02:04:44.3579259Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3579355Z               "line": 90
2026-06-22T02:04:44.3579447Z             },
2026-06-22T02:04:44.3579523Z             {
2026-06-22T02:04:44.3579640Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3579735Z               "line": 151
2026-06-22T02:04:44.3579821Z             }
2026-06-22T02:04:44.3579905Z           ]
2026-06-22T02:04:44.3579990Z         }
2026-06-22T02:04:44.3580076Z       }
2026-06-22T02:04:44.3580163Z     },
2026-06-22T02:04:44.3580239Z     {
2026-06-22T02:04:44.3580333Z       "id": "REQ-MSG-5",
2026-06-22T02:04:44.3581055Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-22T02:04:44.3581159Z       "requiredStages": [
2026-06-22T02:04:44.3581244Z         "doc",
2026-06-22T02:04:44.3581331Z         "impl",
2026-06-22T02:04:44.3581417Z         "unit"
2026-06-22T02:04:44.3581502Z       ],
2026-06-22T02:04:44.3581592Z       "stages": {
2026-06-22T02:04:44.3581670Z         "doc": {
2026-06-22T02:04:44.3581765Z           "complete": true,
2026-06-22T02:04:44.3581850Z           "evidence": [
2026-06-22T02:04:44.3581965Z             {
2026-06-22T02:04:44.3582061Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3582164Z               "line": 231
2026-06-22T02:04:44.3582266Z             }
2026-06-22T02:04:44.3582352Z           ]
2026-06-22T02:04:44.3582446Z         },
2026-06-22T02:04:44.3582540Z         "impl": {
2026-06-22T02:04:44.3582636Z           "complete": true,
2026-06-22T02:04:44.3582723Z           "evidence": [
2026-06-22T02:04:44.3582827Z             {
2026-06-22T02:04:44.3582936Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3583028Z               "line": 60
2026-06-22T02:04:44.3583118Z             },
2026-06-22T02:04:44.3583198Z             {
2026-06-22T02:04:44.3583328Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3583414Z               "line": 126
2026-06-22T02:04:44.3583513Z             },
2026-06-22T02:04:44.3583595Z             {
2026-06-22T02:04:44.3583709Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3583809Z               "line": 135
2026-06-22T02:04:44.3583895Z             },
2026-06-22T02:04:44.3583967Z             {
2026-06-22T02:04:44.3584100Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3584200Z               "line": 149
2026-06-22T02:04:44.3584282Z             },
2026-06-22T02:04:44.3584371Z             {
2026-06-22T02:04:44.3584481Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3584573Z               "line": 178
2026-06-22T02:04:44.3584659Z             },
2026-06-22T02:04:44.3584742Z             {
2026-06-22T02:04:44.3584857Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3584943Z               "line": 2802
2026-06-22T02:04:44.3585036Z             }
2026-06-22T02:04:44.3585121Z           ]
2026-06-22T02:04:44.3585208Z         },
2026-06-22T02:04:44.3585294Z         "int": {
2026-06-22T02:04:44.3585398Z           "complete": true,
2026-06-22T02:04:44.3585493Z           "evidence": [
2026-06-22T02:04:44.3585685Z             {
2026-06-22T02:04:44.3585813Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T02:04:44.3585895Z               "line": 19
2026-06-22T02:04:44.3585985Z             }
2026-06-22T02:04:44.3586070Z           ]
2026-06-22T02:04:44.3586152Z         },
2026-06-22T02:04:44.3586356Z         "unit": {
2026-06-22T02:04:44.3586457Z           "complete": true,
2026-06-22T02:04:44.3586548Z           "evidence": [
2026-06-22T02:04:44.3586634Z             {
2026-06-22T02:04:44.3586748Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3586835Z               "line": 192
2026-06-22T02:04:44.3586928Z             },
2026-06-22T02:04:44.3587014Z             {
2026-06-22T02:04:44.3587135Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:04:44.3587229Z               "line": 154
2026-06-22T02:04:44.3587310Z             },
2026-06-22T02:04:44.3587402Z             {
2026-06-22T02:04:44.3587512Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3587624Z               "line": 122
2026-06-22T02:04:44.3587714Z             },
2026-06-22T02:04:44.3587796Z             {
2026-06-22T02:04:44.3587903Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3587993Z               "line": 452
2026-06-22T02:04:44.3588079Z             },
2026-06-22T02:04:44.3588161Z             {
2026-06-22T02:04:44.3588270Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3588365Z               "line": 501
2026-06-22T02:04:44.3588447Z             },
2026-06-22T02:04:44.3588533Z             {
2026-06-22T02:04:44.3588642Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3588738Z               "line": 517
2026-06-22T02:04:44.3588823Z             },
2026-06-22T02:04:44.3588908Z             {
2026-06-22T02:04:44.3589105Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.3589191Z               "line": 536
2026-06-22T02:04:44.3589281Z             },
2026-06-22T02:04:44.3589378Z             {
2026-06-22T02:04:44.3589491Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3589581Z               "line": 7660
2026-06-22T02:04:44.3589663Z             }
2026-06-22T02:04:44.3589744Z           ]
2026-06-22T02:04:44.3589834Z         }
2026-06-22T02:04:44.3589920Z       }
2026-06-22T02:04:44.3590007Z     },
2026-06-22T02:04:44.3590092Z     {
2026-06-22T02:04:44.3590186Z       "id": "REQ-MSG-6",
2026-06-22T02:04:44.3591776Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-22T02:04:44.3591881Z       "requiredStages": [
2026-06-22T02:04:44.3591963Z         "doc",
2026-06-22T02:04:44.3592043Z         "impl",
2026-06-22T02:04:44.3592134Z         "unit"
2026-06-22T02:04:44.3592215Z       ],
2026-06-22T02:04:44.3592320Z       "stages": {
2026-06-22T02:04:44.3592401Z         "doc": {
2026-06-22T02:04:44.3592511Z           "complete": true,
2026-06-22T02:04:44.3592593Z           "evidence": [
2026-06-22T02:04:44.3592686Z             {
2026-06-22T02:04:44.3592787Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3592864Z               "line": 234
2026-06-22T02:04:44.3592959Z             }
2026-06-22T02:04:44.3593044Z           ]
2026-06-22T02:04:44.3593129Z         },
2026-06-22T02:04:44.3593216Z         "impl": {
2026-06-22T02:04:44.3593312Z           "complete": true,
2026-06-22T02:04:44.3593406Z           "evidence": [
2026-06-22T02:04:44.3593491Z             {
2026-06-22T02:04:44.3593621Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3593821Z               "line": 177
2026-06-22T02:04:44.3593907Z             },
2026-06-22T02:04:44.3593988Z             {
2026-06-22T02:04:44.3594112Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3594198Z               "line": 428
2026-06-22T02:04:44.3594279Z             },
2026-06-22T02:04:44.3594460Z             {
2026-06-22T02:04:44.3594589Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3594684Z               "line": 451
2026-06-22T02:04:44.3594761Z             },
2026-06-22T02:04:44.3594847Z             {
2026-06-22T02:04:44.3594969Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3595066Z               "line": 89
2026-06-22T02:04:44.3595147Z             },
2026-06-22T02:04:44.3595232Z             {
2026-06-22T02:04:44.3595355Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3595446Z               "line": 155
2026-06-22T02:04:44.3595536Z             }
2026-06-22T02:04:44.3595620Z           ]
2026-06-22T02:04:44.3595705Z         },
2026-06-22T02:04:44.3595796Z         "int": {
2026-06-22T02:04:44.3595888Z           "complete": false,
2026-06-22T02:04:44.3595991Z           "evidence": []
2026-06-22T02:04:44.3596073Z         },
2026-06-22T02:04:44.3596164Z         "unit": {
2026-06-22T02:04:44.3596264Z           "complete": true,
2026-06-22T02:04:44.3596349Z           "evidence": [
2026-06-22T02:04:44.3596441Z             {
2026-06-22T02:04:44.3596564Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3596654Z               "line": 1746
2026-06-22T02:04:44.3596736Z             },
2026-06-22T02:04:44.3596822Z             {
2026-06-22T02:04:44.3596931Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3597012Z               "line": 219
2026-06-22T02:04:44.3597094Z             }
2026-06-22T02:04:44.3597179Z           ]
2026-06-22T02:04:44.3597260Z         }
2026-06-22T02:04:44.3597347Z       }
2026-06-22T02:04:44.3597437Z     },
2026-06-22T02:04:44.3597527Z     {
2026-06-22T02:04:44.3597623Z       "id": "REQ-MSG-ENVELOPE",
2026-06-22T02:04:44.3601335Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-22T02:04:44.3601449Z       "requiredStages": [
2026-06-22T02:04:44.3601536Z         "doc",
2026-06-22T02:04:44.3601621Z         "impl",
2026-06-22T02:04:44.3601706Z         "unit",
2026-06-22T02:04:44.3601792Z         "int"
2026-06-22T02:04:44.3601880Z       ],
2026-06-22T02:04:44.3601965Z       "stages": {
2026-06-22T02:04:44.3602050Z         "doc": {
2026-06-22T02:04:44.3602151Z           "complete": true,
2026-06-22T02:04:44.3602241Z           "evidence": [
2026-06-22T02:04:44.3602322Z             {
2026-06-22T02:04:44.3602551Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T02:04:44.3602651Z               "line": 47
2026-06-22T02:04:44.3602834Z             }
2026-06-22T02:04:44.3602918Z           ]
2026-06-22T02:04:44.3602999Z         },
2026-06-22T02:04:44.3603086Z         "impl": {
2026-06-22T02:04:44.3603186Z           "complete": true,
2026-06-22T02:04:44.3603270Z           "evidence": [
2026-06-22T02:04:44.3603463Z             {
2026-06-22T02:04:44.3603580Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3603661Z               "line": 20
2026-06-22T02:04:44.3603756Z             },
2026-06-22T02:04:44.3603843Z             {
2026-06-22T02:04:44.3603947Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3604028Z               "line": 33
2026-06-22T02:04:44.3604114Z             },
2026-06-22T02:04:44.3604200Z             {
2026-06-22T02:04:44.3604300Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3604386Z               "line": 47
2026-06-22T02:04:44.3604472Z             },
2026-06-22T02:04:44.3604562Z             {
2026-06-22T02:04:44.3604667Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3604749Z               "line": 58
2026-06-22T02:04:44.3604834Z             },
2026-06-22T02:04:44.3604919Z             {
2026-06-22T02:04:44.3605030Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3605116Z               "line": 14
2026-06-22T02:04:44.3605196Z             },
2026-06-22T02:04:44.3605272Z             {
2026-06-22T02:04:44.3605374Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3605464Z               "line": 27
2026-06-22T02:04:44.3605549Z             },
2026-06-22T02:04:44.3605630Z             {
2026-06-22T02:04:44.3605731Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3605821Z               "line": 40
2026-06-22T02:04:44.3605906Z             },
2026-06-22T02:04:44.3605996Z             {
2026-06-22T02:04:44.3606114Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.3606203Z               "line": 92
2026-06-22T02:04:44.3606294Z             },
2026-06-22T02:04:44.3606381Z             {
2026-06-22T02:04:44.3606500Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3606595Z               "line": 143
2026-06-22T02:04:44.3606676Z             },
2026-06-22T02:04:44.3606762Z             {
2026-06-22T02:04:44.3606875Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3606963Z               "line": 216
2026-06-22T02:04:44.3607048Z             },
2026-06-22T02:04:44.3607133Z             {
2026-06-22T02:04:44.3607253Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3607339Z               "line": 533
2026-06-22T02:04:44.3607425Z             },
2026-06-22T02:04:44.3607505Z             {
2026-06-22T02:04:44.3607611Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:04:44.3607701Z               "line": 78
2026-06-22T02:04:44.3607792Z             },
2026-06-22T02:04:44.3607868Z             {
2026-06-22T02:04:44.3607974Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3608097Z               "line": 3111
2026-06-22T02:04:44.3608188Z             }
2026-06-22T02:04:44.3608284Z           ]
2026-06-22T02:04:44.3608364Z         },
2026-06-22T02:04:44.3608450Z         "int": {
2026-06-22T02:04:44.3608556Z           "complete": true,
2026-06-22T02:04:44.3608641Z           "evidence": [
2026-06-22T02:04:44.3608725Z             {
2026-06-22T02:04:44.3608849Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-22T02:04:44.3609014Z               "line": 15
2026-06-22T02:04:44.3609104Z             }
2026-06-22T02:04:44.3609186Z           ]
2026-06-22T02:04:44.3609281Z         },
2026-06-22T02:04:44.3609367Z         "unit": {
2026-06-22T02:04:44.3609457Z           "complete": true,
2026-06-22T02:04:44.3609539Z           "evidence": [
2026-06-22T02:04:44.3609634Z             {
2026-06-22T02:04:44.3609738Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3609830Z               "line": 102
2026-06-22T02:04:44.3610015Z             },
2026-06-22T02:04:44.3610101Z             {
2026-06-22T02:04:44.3610207Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:04:44.3610291Z               "line": 137
2026-06-22T02:04:44.3610372Z             },
2026-06-22T02:04:44.3610459Z             {
2026-06-22T02:04:44.3610654Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3610749Z               "line": 98
2026-06-22T02:04:44.3610827Z             },
2026-06-22T02:04:44.3610916Z             {
2026-06-22T02:04:44.3611021Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3611104Z               "line": 106
2026-06-22T02:04:44.3611189Z             },
2026-06-22T02:04:44.3611273Z             {
2026-06-22T02:04:44.3611377Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3611459Z               "line": 113
2026-06-22T02:04:44.3611558Z             },
2026-06-22T02:04:44.3611638Z             {
2026-06-22T02:04:44.3611748Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:04:44.3611834Z               "line": 122
2026-06-22T02:04:44.3611924Z             }
2026-06-22T02:04:44.3612014Z           ]
2026-06-22T02:04:44.3612096Z         }
2026-06-22T02:04:44.3612191Z       }
2026-06-22T02:04:44.3612271Z     },
2026-06-22T02:04:44.3612352Z     {
2026-06-22T02:04:44.3612473Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-22T02:04:44.3617317Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-22T02:04:44.3617431Z       "requiredStages": [
2026-06-22T02:04:44.3617518Z         "doc",
2026-06-22T02:04:44.3617608Z         "impl",
2026-06-22T02:04:44.3617693Z         "unit",
2026-06-22T02:04:44.3617774Z         "int"
2026-06-22T02:04:44.3617862Z       ],
2026-06-22T02:04:44.3617942Z       "stages": {
2026-06-22T02:04:44.3618028Z         "doc": {
2026-06-22T02:04:44.3618123Z           "complete": true,
2026-06-22T02:04:44.3618204Z           "evidence": [
2026-06-22T02:04:44.3618295Z             {
2026-06-22T02:04:44.3618443Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T02:04:44.3618524Z               "line": 277
2026-06-22T02:04:44.3618609Z             },
2026-06-22T02:04:44.3618690Z             {
2026-06-22T02:04:44.3618797Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.3618891Z               "line": 198
2026-06-22T02:04:44.3619033Z             }
2026-06-22T02:04:44.3619286Z           ]
2026-06-22T02:04:44.3619366Z         },
2026-06-22T02:04:44.3619462Z         "impl": {
2026-06-22T02:04:44.3619551Z           "complete": true,
2026-06-22T02:04:44.3619640Z           "evidence": [
2026-06-22T02:04:44.3619726Z             {
2026-06-22T02:04:44.3619851Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3620050Z               "line": 1026
2026-06-22T02:04:44.3620128Z             },
2026-06-22T02:04:44.3620214Z             {
2026-06-22T02:04:44.3620341Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3620423Z               "line": 23
2026-06-22T02:04:44.3620509Z             },
2026-06-22T02:04:44.3620589Z             {
2026-06-22T02:04:44.3620714Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3620805Z               "line": 91
2026-06-22T02:04:44.3620881Z             },
2026-06-22T02:04:44.3620961Z             {
2026-06-22T02:04:44.3621086Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3621176Z               "line": 239
2026-06-22T02:04:44.3621252Z             },
2026-06-22T02:04:44.3621339Z             {
2026-06-22T02:04:44.3621458Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3621553Z               "line": 287
2026-06-22T02:04:44.3621639Z             },
2026-06-22T02:04:44.3621726Z             {
2026-06-22T02:04:44.3621857Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3621942Z               "line": 311
2026-06-22T02:04:44.3622023Z             },
2026-06-22T02:04:44.3622109Z             {
2026-06-22T02:04:44.3622240Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3622327Z               "line": 60
2026-06-22T02:04:44.3622413Z             },
2026-06-22T02:04:44.3622493Z             {
2026-06-22T02:04:44.3622608Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3622695Z               "line": 889
2026-06-22T02:04:44.3622776Z             }
2026-06-22T02:04:44.3622865Z           ]
2026-06-22T02:04:44.3622952Z         },
2026-06-22T02:04:44.3623047Z         "int": {
2026-06-22T02:04:44.3623137Z           "complete": true,
2026-06-22T02:04:44.3623223Z           "evidence": [
2026-06-22T02:04:44.3623314Z             {
2026-06-22T02:04:44.3623466Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3623566Z               "line": 1127
2026-06-22T02:04:44.3623644Z             },
2026-06-22T02:04:44.3623723Z             {
2026-06-22T02:04:44.3623871Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3623958Z               "line": 1232
2026-06-22T02:04:44.3624047Z             },
2026-06-22T02:04:44.3624133Z             {
2026-06-22T02:04:44.3624278Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3624362Z               "line": 1300
2026-06-22T02:04:44.3624443Z             },
2026-06-22T02:04:44.3624526Z             {
2026-06-22T02:04:44.3624668Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.3624762Z               "line": 1393
2026-06-22T02:04:44.3624843Z             }
2026-06-22T02:04:44.3624930Z           ]
2026-06-22T02:04:44.3625020Z         },
2026-06-22T02:04:44.3625100Z         "unit": {
2026-06-22T02:04:44.3625187Z           "complete": true,
2026-06-22T02:04:44.3625273Z           "evidence": [
2026-06-22T02:04:44.3625367Z             {
2026-06-22T02:04:44.3625492Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.3625578Z               "line": 270
2026-06-22T02:04:44.3625668Z             },
2026-06-22T02:04:44.3625749Z             {
2026-06-22T02:04:44.3625879Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3625973Z               "line": 350
2026-06-22T02:04:44.3626059Z             },
2026-06-22T02:04:44.3626136Z             {
2026-06-22T02:04:44.3626269Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3626446Z               "line": 381
2026-06-22T02:04:44.3626532Z             },
2026-06-22T02:04:44.3626616Z             {
2026-06-22T02:04:44.3626741Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3626833Z               "line": 411
2026-06-22T02:04:44.3626988Z             },
2026-06-22T02:04:44.3627073Z             {
2026-06-22T02:04:44.3627202Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:04:44.3627286Z               "line": 440
2026-06-22T02:04:44.3627376Z             },
2026-06-22T02:04:44.3627458Z             {
2026-06-22T02:04:44.3627586Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3627672Z               "line": 1181
2026-06-22T02:04:44.3627758Z             }
2026-06-22T02:04:44.3627849Z           ]
2026-06-22T02:04:44.3627934Z         }
2026-06-22T02:04:44.3628024Z       }
2026-06-22T02:04:44.3628107Z     },
2026-06-22T02:04:44.3628192Z     {
2026-06-22T02:04:44.3628282Z       "id": "REQ-NET-1",
2026-06-22T02:04:44.3628469Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-22T02:04:44.3628568Z       "requiredStages": [
2026-06-22T02:04:44.3628649Z         "impl",
2026-06-22T02:04:44.3628741Z         "unit",
2026-06-22T02:04:44.3628831Z         "int"
2026-06-22T02:04:44.3628912Z       ],
2026-06-22T02:04:44.3629071Z       "stages": {
2026-06-22T02:04:44.3629169Z         "doc": {
2026-06-22T02:04:44.3629274Z           "complete": false,
2026-06-22T02:04:44.3629381Z           "evidence": []
2026-06-22T02:04:44.3629470Z         },
2026-06-22T02:04:44.3629556Z         "impl": {
2026-06-22T02:04:44.3629652Z           "complete": true,
2026-06-22T02:04:44.3629738Z           "evidence": [
2026-06-22T02:04:44.3629827Z             {
2026-06-22T02:04:44.3629955Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3630046Z               "line": 54
2026-06-22T02:04:44.3630139Z             },
2026-06-22T02:04:44.3630219Z             {
2026-06-22T02:04:44.3630344Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3630435Z               "line": 594
2026-06-22T02:04:44.3630515Z             },
2026-06-22T02:04:44.3630601Z             {
2026-06-22T02:04:44.3630707Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:04:44.3630792Z               "line": 130
2026-06-22T02:04:44.3630877Z             },
2026-06-22T02:04:44.3630960Z             {
2026-06-22T02:04:44.3631078Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3631169Z               "line": 97
2026-06-22T02:04:44.3631254Z             },
2026-06-22T02:04:44.3631341Z             {
2026-06-22T02:04:44.3631464Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3631555Z               "line": 159
2026-06-22T02:04:44.3631632Z             },
2026-06-22T02:04:44.3631727Z             {
2026-06-22T02:04:44.3631841Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3631938Z               "line": 175
2026-06-22T02:04:44.3632013Z             },
2026-06-22T02:04:44.3632098Z             {
2026-06-22T02:04:44.3632214Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3632309Z               "line": 190
2026-06-22T02:04:44.3632398Z             },
2026-06-22T02:04:44.3632483Z             {
2026-06-22T02:04:44.3632612Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3632692Z               "line": 271
2026-06-22T02:04:44.3632781Z             },
2026-06-22T02:04:44.3632868Z             {
2026-06-22T02:04:44.3632993Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3633086Z               "line": 306
2026-06-22T02:04:44.3633168Z             },
2026-06-22T02:04:44.3633236Z             {
2026-06-22T02:04:44.3633341Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3633430Z               "line": 312
2026-06-22T02:04:44.3633512Z             },
2026-06-22T02:04:44.3633702Z             {
2026-06-22T02:04:44.3633817Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3633903Z               "line": 318
2026-06-22T02:04:44.3633993Z             },
2026-06-22T02:04:44.3634078Z             {
2026-06-22T02:04:44.3634204Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3634383Z               "line": 334
2026-06-22T02:04:44.3634466Z             },
2026-06-22T02:04:44.3634552Z             {
2026-06-22T02:04:44.3634670Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3634756Z               "line": 354
2026-06-22T02:04:44.3634843Z             },
2026-06-22T02:04:44.3634923Z             {
2026-06-22T02:04:44.3635037Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:04:44.3635124Z               "line": 35
2026-06-22T02:04:44.3635205Z             },
2026-06-22T02:04:44.3635289Z             {
2026-06-22T02:04:44.3635408Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:04:44.3635499Z               "line": 85
2026-06-22T02:04:44.3635594Z             },
2026-06-22T02:04:44.3635675Z             {
2026-06-22T02:04:44.3635785Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.3635886Z               "line": 138
2026-06-22T02:04:44.3635965Z             },
2026-06-22T02:04:44.3636052Z             {
2026-06-22T02:04:44.3636157Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3636247Z               "line": 2953
2026-06-22T02:04:44.3636342Z             },
2026-06-22T02:04:44.3636425Z             {
2026-06-22T02:04:44.3636543Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3636628Z               "line": 17
2026-06-22T02:04:44.3636715Z             }
2026-06-22T02:04:44.3636806Z           ]
2026-06-22T02:04:44.3636891Z         },
2026-06-22T02:04:44.3636982Z         "int": {
2026-06-22T02:04:44.3637073Z           "complete": true,
2026-06-22T02:04:44.3637162Z           "evidence": [
2026-06-22T02:04:44.3637248Z             {
2026-06-22T02:04:44.3637379Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3637468Z               "line": 341
2026-06-22T02:04:44.3637558Z             },
2026-06-22T02:04:44.3637648Z             {
2026-06-22T02:04:44.3637762Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3637851Z               "line": 675
2026-06-22T02:04:44.3637931Z             },
2026-06-22T02:04:44.3638013Z             {
2026-06-22T02:04:44.3638133Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3638227Z               "line": 973
2026-06-22T02:04:44.3638309Z             }
2026-06-22T02:04:44.3638390Z           ]
2026-06-22T02:04:44.3638480Z         },
2026-06-22T02:04:44.3638566Z         "unit": {
2026-06-22T02:04:44.3638663Z           "complete": true,
2026-06-22T02:04:44.3638752Z           "evidence": [
2026-06-22T02:04:44.3638842Z             {
2026-06-22T02:04:44.3639024Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3639110Z               "line": 651
2026-06-22T02:04:44.3639200Z             },
2026-06-22T02:04:44.3639287Z             {
2026-06-22T02:04:44.3639420Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3639501Z               "line": 686
2026-06-22T02:04:44.3639597Z             },
2026-06-22T02:04:44.3639677Z             {
2026-06-22T02:04:44.3639801Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3639893Z               "line": 940
2026-06-22T02:04:44.3639969Z             },
2026-06-22T02:04:44.3640048Z             {
2026-06-22T02:04:44.3640168Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:04:44.3640265Z               "line": 201
2026-06-22T02:04:44.3640349Z             },
2026-06-22T02:04:44.3640425Z             {
2026-06-22T02:04:44.3640548Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3640620Z               "line": 442
2026-06-22T02:04:44.3640817Z             },
2026-06-22T02:04:44.3640900Z             {
2026-06-22T02:04:44.3641023Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3641118Z               "line": 456
2026-06-22T02:04:44.3641200Z             },
2026-06-22T02:04:44.3641281Z             {
2026-06-22T02:04:44.3641515Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3641610Z               "line": 475
2026-06-22T02:04:44.3641686Z             },
2026-06-22T02:04:44.3641771Z             {
2026-06-22T02:04:44.3641887Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:04:44.3641977Z               "line": 120
2026-06-22T02:04:44.3642053Z             },
2026-06-22T02:04:44.3642130Z             {
2026-06-22T02:04:44.3642254Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:04:44.3642344Z               "line": 163
2026-06-22T02:04:44.3642425Z             },
2026-06-22T02:04:44.3642503Z             {
2026-06-22T02:04:44.3642620Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:04:44.3642711Z               "line": 530
2026-06-22T02:04:44.3642793Z             },
2026-06-22T02:04:44.3642879Z             {
2026-06-22T02:04:44.3642996Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3643072Z               "line": 616
2026-06-22T02:04:44.3643158Z             },
2026-06-22T02:04:44.3643243Z             {
2026-06-22T02:04:44.3643346Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.3643433Z               "line": 1006
2026-06-22T02:04:44.3643519Z             }
2026-06-22T02:04:44.3643600Z           ]
2026-06-22T02:04:44.3643680Z         }
2026-06-22T02:04:44.3643772Z       }
2026-06-22T02:04:44.3643858Z     },
2026-06-22T02:04:44.3643947Z     {
2026-06-22T02:04:44.3644038Z       "id": "REQ-NET-2",
2026-06-22T02:04:44.3644210Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-22T02:04:44.3644319Z       "requiredStages": [
2026-06-22T02:04:44.3644411Z         "impl"
2026-06-22T02:04:44.3644492Z       ],
2026-06-22T02:04:44.3644577Z       "stages": {
2026-06-22T02:04:44.3644663Z         "doc": {
2026-06-22T02:04:44.3644754Z           "complete": false,
2026-06-22T02:04:44.3644849Z           "evidence": []
2026-06-22T02:04:44.3644934Z         },
2026-06-22T02:04:44.3645021Z         "impl": {
2026-06-22T02:04:44.3645121Z           "complete": true,
2026-06-22T02:04:44.3645196Z           "evidence": [
2026-06-22T02:04:44.3645292Z             {
2026-06-22T02:04:44.3645417Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.3645506Z               "line": 57
2026-06-22T02:04:44.3645597Z             },
2026-06-22T02:04:44.3645675Z             {
2026-06-22T02:04:44.3645802Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3645887Z               "line": 71
2026-06-22T02:04:44.3645978Z             },
2026-06-22T02:04:44.3646065Z             {
2026-06-22T02:04:44.3646187Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3646287Z               "line": 81
2026-06-22T02:04:44.3646370Z             },
2026-06-22T02:04:44.3646460Z             {
2026-06-22T02:04:44.3646578Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3646675Z               "line": 159
2026-06-22T02:04:44.3646765Z             },
2026-06-22T02:04:44.3646854Z             {
2026-06-22T02:04:44.3650863Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3650975Z               "line": 175
2026-06-22T02:04:44.3651056Z             },
2026-06-22T02:04:44.3651142Z             {
2026-06-22T02:04:44.3651288Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:04:44.3651368Z               "line": 190
2026-06-22T02:04:44.3651450Z             }
2026-06-22T02:04:44.3651532Z           ]
2026-06-22T02:04:44.3651612Z         },
2026-06-22T02:04:44.3651707Z         "int": {
2026-06-22T02:04:44.3651803Z           "complete": false,
2026-06-22T02:04:44.3652065Z           "evidence": []
2026-06-22T02:04:44.3652151Z         },
2026-06-22T02:04:44.3652232Z         "unit": {
2026-06-22T02:04:44.3652331Z           "complete": true,
2026-06-22T02:04:44.3652428Z           "evidence": [
2026-06-22T02:04:44.3652513Z             {
2026-06-22T02:04:44.3652642Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.3652832Z               "line": 402
2026-06-22T02:04:44.3652918Z             }
2026-06-22T02:04:44.3653000Z           ]
2026-06-22T02:04:44.3653082Z         }
2026-06-22T02:04:44.3653166Z       }
2026-06-22T02:04:44.3653248Z     },
2026-06-22T02:04:44.3653330Z     {
2026-06-22T02:04:44.3653420Z       "id": "REQ-NET-3",
2026-06-22T02:04:44.3653603Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-22T02:04:44.3653700Z       "requiredStages": [
2026-06-22T02:04:44.3653784Z         "impl",
2026-06-22T02:04:44.3653869Z         "unit"
2026-06-22T02:04:44.3653954Z       ],
2026-06-22T02:04:44.3654036Z       "stages": {
2026-06-22T02:04:44.3654136Z         "doc": {
2026-06-22T02:04:44.3654230Z           "complete": false,
2026-06-22T02:04:44.3654322Z           "evidence": []
2026-06-22T02:04:44.3654399Z         },
2026-06-22T02:04:44.3654484Z         "impl": {
2026-06-22T02:04:44.3654579Z           "complete": true,
2026-06-22T02:04:44.3654661Z           "evidence": [
2026-06-22T02:04:44.3654747Z             {
2026-06-22T02:04:44.3654870Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3654952Z               "line": 39
2026-06-22T02:04:44.3655037Z             },
2026-06-22T02:04:44.3655123Z             {
2026-06-22T02:04:44.3655242Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3655329Z               "line": 182
2026-06-22T02:04:44.3655418Z             },
2026-06-22T02:04:44.3655495Z             {
2026-06-22T02:04:44.3655606Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:04:44.3655695Z               "line": 333
2026-06-22T02:04:44.3655786Z             },
2026-06-22T02:04:44.3655872Z             {
2026-06-22T02:04:44.3655987Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:04:44.3656076Z               "line": 36
2026-06-22T02:04:44.3656157Z             },
2026-06-22T02:04:44.3656250Z             {
2026-06-22T02:04:44.3656381Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3656475Z               "line": 158
2026-06-22T02:04:44.3656562Z             },
2026-06-22T02:04:44.3656644Z             {
2026-06-22T02:04:44.3656766Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3656847Z               "line": 238
2026-06-22T02:04:44.3656930Z             },
2026-06-22T02:04:44.3657016Z             {
2026-06-22T02:04:44.3657133Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3657225Z               "line": 259
2026-06-22T02:04:44.3657306Z             },
2026-06-22T02:04:44.3657391Z             {
2026-06-22T02:04:44.3657506Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3657597Z               "line": 317
2026-06-22T02:04:44.3657683Z             },
2026-06-22T02:04:44.3657768Z             {
2026-06-22T02:04:44.3657893Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3657977Z               "line": 336
2026-06-22T02:04:44.3658063Z             },
2026-06-22T02:04:44.3658151Z             {
2026-06-22T02:04:44.3658269Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3658350Z               "line": 374
2026-06-22T02:04:44.3658431Z             },
2026-06-22T02:04:44.3658513Z             {
2026-06-22T02:04:44.3658621Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3658711Z               "line": 419
2026-06-22T02:04:44.3658797Z             },
2026-06-22T02:04:44.3658883Z             {
2026-06-22T02:04:44.3659085Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3659177Z               "line": 432
2026-06-22T02:04:44.3659386Z             },
2026-06-22T02:04:44.3659467Z             {
2026-06-22T02:04:44.3659596Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.3659681Z               "line": 29
2026-06-22T02:04:44.3659763Z             },
2026-06-22T02:04:44.3659853Z             {
2026-06-22T02:04:44.3660064Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.3660154Z               "line": 72
2026-06-22T02:04:44.3660235Z             },
2026-06-22T02:04:44.3660325Z             {
2026-06-22T02:04:44.3660431Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.3660520Z               "line": 123
2026-06-22T02:04:44.3660601Z             }
2026-06-22T02:04:44.3660688Z           ]
2026-06-22T02:04:44.3660770Z         },
2026-06-22T02:04:44.3660854Z         "int": {
2026-06-22T02:04:44.3660954Z           "complete": false,
2026-06-22T02:04:44.3661046Z           "evidence": []
2026-06-22T02:04:44.3661132Z         },
2026-06-22T02:04:44.3661217Z         "unit": {
2026-06-22T02:04:44.3661308Z           "complete": true,
2026-06-22T02:04:44.3661395Z           "evidence": [
2026-06-22T02:04:44.3661474Z             {
2026-06-22T02:04:44.3661597Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:04:44.3661683Z               "line": 223
2026-06-22T02:04:44.3661769Z             },
2026-06-22T02:04:44.3661848Z             {
2026-06-22T02:04:44.3661967Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:04:44.3662053Z               "line": 351
2026-06-22T02:04:44.3662135Z             },
2026-06-22T02:04:44.3662229Z             {
2026-06-22T02:04:44.3662335Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:04:44.3662420Z               "line": 504
2026-06-22T02:04:44.3662505Z             },
2026-06-22T02:04:44.3662591Z             {
2026-06-22T02:04:44.3662711Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:04:44.3662788Z               "line": 93
2026-06-22T02:04:44.3662873Z             },
2026-06-22T02:04:44.3662964Z             {
2026-06-22T02:04:44.3663073Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:04:44.3663154Z               "line": 142
2026-06-22T02:04:44.3663235Z             },
2026-06-22T02:04:44.3663327Z             {
2026-06-22T02:04:44.3663445Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.3663526Z               "line": 315
2026-06-22T02:04:44.3663613Z             },
2026-06-22T02:04:44.3663693Z             {
2026-06-22T02:04:44.3663812Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.3663895Z               "line": 355
2026-06-22T02:04:44.3663980Z             },
2026-06-22T02:04:44.3664064Z             {
2026-06-22T02:04:44.3664178Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:04:44.3664269Z               "line": 494
2026-06-22T02:04:44.3664339Z             }
2026-06-22T02:04:44.3664434Z           ]
2026-06-22T02:04:44.3664519Z         }
2026-06-22T02:04:44.3664606Z       }
2026-06-22T02:04:44.3664687Z     },
2026-06-22T02:04:44.3664772Z     {
2026-06-22T02:04:44.3664872Z       "id": "REQ-NODE-IDENTITY",
2026-06-22T02:04:44.3665101Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-22T02:04:44.3665202Z       "requiredStages": [
2026-06-22T02:04:44.3665292Z         "impl",
2026-06-22T02:04:44.3665368Z         "unit"
2026-06-22T02:04:44.3665453Z       ],
2026-06-22T02:04:44.3665546Z       "stages": {
2026-06-22T02:04:44.3665626Z         "doc": {
2026-06-22T02:04:44.3665721Z           "complete": false,
2026-06-22T02:04:44.3665812Z           "evidence": []
2026-06-22T02:04:44.3665898Z         },
2026-06-22T02:04:44.3665984Z         "impl": {
2026-06-22T02:04:44.3666078Z           "complete": true,
2026-06-22T02:04:44.3666171Z           "evidence": [
2026-06-22T02:04:44.3666260Z             {
2026-06-22T02:04:44.3666384Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3666542Z               "line": 60
2026-06-22T02:04:44.3666627Z             },
2026-06-22T02:04:44.3666708Z             {
2026-06-22T02:04:44.3666819Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3666904Z               "line": 68
2026-06-22T02:04:44.3666989Z             },
2026-06-22T02:04:44.3667141Z             {
2026-06-22T02:04:44.3667256Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3667345Z               "line": 86
2026-06-22T02:04:44.3667432Z             },
2026-06-22T02:04:44.3667519Z             {
2026-06-22T02:04:44.3667632Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3667723Z               "line": 120
2026-06-22T02:04:44.3667804Z             },
2026-06-22T02:04:44.3667895Z             {
2026-06-22T02:04:44.3667998Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3668086Z               "line": 127
2026-06-22T02:04:44.3668171Z             },
2026-06-22T02:04:44.3668248Z             {
2026-06-22T02:04:44.3668362Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3668458Z               "line": 143
2026-06-22T02:04:44.3668543Z             },
2026-06-22T02:04:44.3668624Z             {
2026-06-22T02:04:44.3668730Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:04:44.3668820Z               "line": 16
2026-06-22T02:04:44.3668900Z             }
2026-06-22T02:04:44.3669097Z           ]
2026-06-22T02:04:44.3669177Z         },
2026-06-22T02:04:44.3669262Z         "int": {
2026-06-22T02:04:44.3669343Z           "complete": false,
2026-06-22T02:04:44.3669438Z           "evidence": []
2026-06-22T02:04:44.3669527Z         },
2026-06-22T02:04:44.3669607Z         "unit": {
2026-06-22T02:04:44.3669694Z           "complete": true,
2026-06-22T02:04:44.3669780Z           "evidence": [
2026-06-22T02:04:44.3669865Z             {
2026-06-22T02:04:44.3669984Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3670066Z               "line": 199
2026-06-22T02:04:44.3670151Z             },
2026-06-22T02:04:44.3670236Z             {
2026-06-22T02:04:44.3670357Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3670437Z               "line": 218
2026-06-22T02:04:44.3670518Z             },
2026-06-22T02:04:44.3670604Z             {
2026-06-22T02:04:44.3670724Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3670809Z               "line": 234
2026-06-22T02:04:44.3670895Z             },
2026-06-22T02:04:44.3670977Z             {
2026-06-22T02:04:44.3671085Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:04:44.3671171Z               "line": 256
2026-06-22T02:04:44.3671258Z             },
2026-06-22T02:04:44.3671335Z             {
2026-06-22T02:04:44.3671453Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:04:44.3671544Z               "line": 124
2026-06-22T02:04:44.3671626Z             },
2026-06-22T02:04:44.3671706Z             {
2026-06-22T02:04:44.3671815Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:04:44.3671902Z               "line": 140
2026-06-22T02:04:44.3671988Z             },
2026-06-22T02:04:44.3672072Z             {
2026-06-22T02:04:44.3672181Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:04:44.3672272Z               "line": 155
2026-06-22T02:04:44.3672347Z             }
2026-06-22T02:04:44.3672422Z           ]
2026-06-22T02:04:44.3672507Z         }
2026-06-22T02:04:44.3672589Z       }
2026-06-22T02:04:44.3672671Z     },
2026-06-22T02:04:44.3672755Z     {
2026-06-22T02:04:44.3672851Z       "id": "REQ-NOTIF-1",
2026-06-22T02:04:44.3673205Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-22T02:04:44.3673295Z       "requiredStages": [
2026-06-22T02:04:44.3673381Z         "impl",
2026-06-22T02:04:44.3673466Z         "unit",
2026-06-22T02:04:44.3673553Z         "int"
2026-06-22T02:04:44.3673738Z       ],
2026-06-22T02:04:44.3673825Z       "stages": {
2026-06-22T02:04:44.3673906Z         "doc": {
2026-06-22T02:04:44.3674000Z           "complete": false,
2026-06-22T02:04:44.3674087Z           "evidence": []
2026-06-22T02:04:44.3674173Z         },
2026-06-22T02:04:44.3674263Z         "impl": {
2026-06-22T02:04:44.3674469Z           "complete": true,
2026-06-22T02:04:44.3674555Z           "evidence": [
2026-06-22T02:04:44.3674639Z             {
2026-06-22T02:04:44.3674767Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3674853Z               "line": 514
2026-06-22T02:04:44.3674937Z             },
2026-06-22T02:04:44.3675017Z             {
2026-06-22T02:04:44.3675127Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3675214Z               "line": 30
2026-06-22T02:04:44.3675284Z             },
2026-06-22T02:04:44.3675370Z             {
2026-06-22T02:04:44.3675486Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3675571Z               "line": 69
2026-06-22T02:04:44.3675656Z             },
2026-06-22T02:04:44.3675738Z             {
2026-06-22T02:04:44.3675843Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3675928Z               "line": 93
2026-06-22T02:04:44.3676014Z             },
2026-06-22T02:04:44.3676096Z             {
2026-06-22T02:04:44.3676205Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3676290Z               "line": 107
2026-06-22T02:04:44.3676372Z             },
2026-06-22T02:04:44.3676458Z             {
2026-06-22T02:04:44.3676567Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3676653Z               "line": 142
2026-06-22T02:04:44.3676745Z             },
2026-06-22T02:04:44.3676824Z             {
2026-06-22T02:04:44.3676934Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3677021Z               "line": 187
2026-06-22T02:04:44.3677107Z             },
2026-06-22T02:04:44.3677196Z             {
2026-06-22T02:04:44.3677307Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3677399Z               "line": 258
2026-06-22T02:04:44.3677478Z             },
2026-06-22T02:04:44.3677558Z             {
2026-06-22T02:04:44.3677663Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3677750Z               "line": 372
2026-06-22T02:04:44.3677835Z             },
2026-06-22T02:04:44.3677920Z             {
2026-06-22T02:04:44.3678021Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3678102Z               "line": 479
2026-06-22T02:04:44.3678187Z             },
2026-06-22T02:04:44.3678268Z             {
2026-06-22T02:04:44.3678393Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3678479Z               "line": 24
2026-06-22T02:04:44.3678563Z             },
2026-06-22T02:04:44.3678646Z             {
2026-06-22T02:04:44.3678755Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3678845Z               "line": 34
2026-06-22T02:04:44.3678927Z             },
2026-06-22T02:04:44.3679103Z             {
2026-06-22T02:04:44.3679207Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3679300Z               "line": 60
2026-06-22T02:04:44.3679394Z             },
2026-06-22T02:04:44.3679480Z             {
2026-06-22T02:04:44.3679595Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3679680Z               "line": 82
2026-06-22T02:04:44.3679770Z             },
2026-06-22T02:04:44.3679851Z             {
2026-06-22T02:04:44.3679969Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3680063Z               "line": 94
2026-06-22T02:04:44.3680144Z             },
2026-06-22T02:04:44.3680215Z             {
2026-06-22T02:04:44.3680335Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.3680425Z               "line": 96
2026-06-22T02:04:44.3680501Z             },
2026-06-22T02:04:44.3680673Z             {
2026-06-22T02:04:44.3680801Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-22T02:04:44.3680889Z               "line": 44
2026-06-22T02:04:44.3680974Z             },
2026-06-22T02:04:44.3681054Z             {
2026-06-22T02:04:44.3681174Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:04:44.3681360Z               "line": 20
2026-06-22T02:04:44.3681440Z             },
2026-06-22T02:04:44.3681523Z             {
2026-06-22T02:04:44.3681632Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:04:44.3681718Z               "line": 30
2026-06-22T02:04:44.3681803Z             },
2026-06-22T02:04:44.3681895Z             {
2026-06-22T02:04:44.3681998Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:04:44.3682084Z               "line": 50
2026-06-22T02:04:44.3682172Z             },
2026-06-22T02:04:44.3682252Z             {
2026-06-22T02:04:44.3682362Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3682448Z               "line": 28
2026-06-22T02:04:44.3682534Z             },
2026-06-22T02:04:44.3682618Z             {
2026-06-22T02:04:44.3682732Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3682822Z               "line": 126
2026-06-22T02:04:44.3682907Z             },
2026-06-22T02:04:44.3682992Z             {
2026-06-22T02:04:44.3683102Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3683198Z               "line": 161
2026-06-22T02:04:44.3683283Z             },
2026-06-22T02:04:44.3683368Z             {
2026-06-22T02:04:44.3683484Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3683570Z               "line": 202
2026-06-22T02:04:44.3683654Z             },
2026-06-22T02:04:44.3683741Z             {
2026-06-22T02:04:44.3683846Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3683932Z               "line": 213
2026-06-22T02:04:44.3684017Z             },
2026-06-22T02:04:44.3684104Z             {
2026-06-22T02:04:44.3684203Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3684288Z               "line": 238
2026-06-22T02:04:44.3684370Z             },
2026-06-22T02:04:44.3684457Z             {
2026-06-22T02:04:44.3684565Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3684651Z               "line": 261
2026-06-22T02:04:44.3684738Z             },
2026-06-22T02:04:44.3684819Z             {
2026-06-22T02:04:44.3684928Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3685015Z               "line": 86
2026-06-22T02:04:44.3685096Z             }
2026-06-22T02:04:44.3685185Z           ]
2026-06-22T02:04:44.3685266Z         },
2026-06-22T02:04:44.3685347Z         "int": {
2026-06-22T02:04:44.3685432Z           "complete": true,
2026-06-22T02:04:44.3685520Z           "evidence": [
2026-06-22T02:04:44.3685606Z             {
2026-06-22T02:04:44.3685736Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3685831Z               "line": 285
2026-06-22T02:04:44.3685906Z             },
2026-06-22T02:04:44.3685988Z             {
2026-06-22T02:04:44.3686102Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:04:44.3686197Z               "line": 145
2026-06-22T02:04:44.3686288Z             },
2026-06-22T02:04:44.3686370Z             {
2026-06-22T02:04:44.3686498Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3686588Z               "line": 684
2026-06-22T02:04:44.3686675Z             },
2026-06-22T02:04:44.3686755Z             {
2026-06-22T02:04:44.3686879Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3686976Z               "line": 1102
2026-06-22T02:04:44.3687061Z             }
2026-06-22T02:04:44.3687146Z           ]
2026-06-22T02:04:44.3687232Z         },
2026-06-22T02:04:44.3687319Z         "unit": {
2026-06-22T02:04:44.3687408Z           "complete": true,
2026-06-22T02:04:44.3687499Z           "evidence": [
2026-06-22T02:04:44.3687663Z             {
2026-06-22T02:04:44.3687776Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3687862Z               "line": 572
2026-06-22T02:04:44.3687944Z             },
2026-06-22T02:04:44.3688029Z             {
2026-06-22T02:04:44.3688147Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3688314Z               "line": 636
2026-06-22T02:04:44.3688395Z             },
2026-06-22T02:04:44.3688480Z             {
2026-06-22T02:04:44.3688586Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3688672Z               "line": 740
2026-06-22T02:04:44.3688757Z             },
2026-06-22T02:04:44.3688843Z             {
2026-06-22T02:04:44.3689020Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3689110Z               "line": 772
2026-06-22T02:04:44.3689196Z             },
2026-06-22T02:04:44.3689287Z             {
2026-06-22T02:04:44.3689391Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3689487Z               "line": 840
2026-06-22T02:04:44.3689569Z             },
2026-06-22T02:04:44.3689658Z             {
2026-06-22T02:04:44.3689772Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3689865Z               "line": 898
2026-06-22T02:04:44.3689959Z             },
2026-06-22T02:04:44.3690044Z             {
2026-06-22T02:04:44.3690160Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3690240Z               "line": 1173
2026-06-22T02:04:44.3690330Z             },
2026-06-22T02:04:44.3690411Z             {
2026-06-22T02:04:44.3690530Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3690623Z               "line": 157
2026-06-22T02:04:44.3690699Z             },
2026-06-22T02:04:44.3690780Z             {
2026-06-22T02:04:44.3690886Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3690976Z               "line": 250
2026-06-22T02:04:44.3691051Z             },
2026-06-22T02:04:44.3691134Z             {
2026-06-22T02:04:44.3691257Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:04:44.3691338Z               "line": 273
2026-06-22T02:04:44.3691424Z             },
2026-06-22T02:04:44.3691506Z             {
2026-06-22T02:04:44.3691634Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.3691715Z               "line": 355
2026-06-22T02:04:44.3691801Z             },
2026-06-22T02:04:44.3691882Z             {
2026-06-22T02:04:44.3692005Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:04:44.3692093Z               "line": 392
2026-06-22T02:04:44.3692177Z             },
2026-06-22T02:04:44.3692249Z             {
2026-06-22T02:04:44.3692383Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T02:04:44.3692464Z               "line": 131
2026-06-22T02:04:44.3692549Z             },
2026-06-22T02:04:44.3692626Z             {
2026-06-22T02:04:44.3692746Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:04:44.3692845Z               "line": 72
2026-06-22T02:04:44.3692917Z             },
2026-06-22T02:04:44.3693003Z             {
2026-06-22T02:04:44.3693108Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:04:44.3693198Z               "line": 97
2026-06-22T02:04:44.3693287Z             },
2026-06-22T02:04:44.3693369Z             {
2026-06-22T02:04:44.3693477Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3693561Z               "line": 379
2026-06-22T02:04:44.3693652Z             },
2026-06-22T02:04:44.3693734Z             {
2026-06-22T02:04:44.3693838Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3693923Z               "line": 417
2026-06-22T02:04:44.3694001Z             },
2026-06-22T02:04:44.3694092Z             {
2026-06-22T02:04:44.3694200Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3694291Z               "line": 433
2026-06-22T02:04:44.3694482Z             },
2026-06-22T02:04:44.3694567Z             {
2026-06-22T02:04:44.3694673Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3694759Z               "line": 472
2026-06-22T02:04:44.3694844Z             },
2026-06-22T02:04:44.3694930Z             {
2026-06-22T02:04:44.3695125Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3695211Z               "line": 489
2026-06-22T02:04:44.3695289Z             },
2026-06-22T02:04:44.3695370Z             {
2026-06-22T02:04:44.3695479Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3695575Z               "line": 517
2026-06-22T02:04:44.3695656Z             },
2026-06-22T02:04:44.3695745Z             {
2026-06-22T02:04:44.3695844Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:04:44.3695940Z               "line": 548
2026-06-22T02:04:44.3696025Z             },
2026-06-22T02:04:44.3696109Z             {
2026-06-22T02:04:44.3696234Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3696315Z               "line": 745
2026-06-22T02:04:44.3696396Z             }
2026-06-22T02:04:44.3696481Z           ]
2026-06-22T02:04:44.3696567Z         }
2026-06-22T02:04:44.3696648Z       }
2026-06-22T02:04:44.3696739Z     },
2026-06-22T02:04:44.3696815Z     {
2026-06-22T02:04:44.3696916Z       "id": "REQ-NOTIF-2",
2026-06-22T02:04:44.3697178Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-22T02:04:44.3697283Z       "requiredStages": [
2026-06-22T02:04:44.3697369Z         "doc",
2026-06-22T02:04:44.3697454Z         "impl",
2026-06-22T02:04:44.3697531Z         "unit",
2026-06-22T02:04:44.3697621Z         "int"
2026-06-22T02:04:44.3697697Z       ],
2026-06-22T02:04:44.3697783Z       "stages": {
2026-06-22T02:04:44.3697870Z         "doc": {
2026-06-22T02:04:44.3697968Z           "complete": true,
2026-06-22T02:04:44.3698059Z           "evidence": [
2026-06-22T02:04:44.3698147Z             {
2026-06-22T02:04:44.3698251Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3698341Z               "line": 509
2026-06-22T02:04:44.3698422Z             },
2026-06-22T02:04:44.3698504Z             {
2026-06-22T02:04:44.3698612Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.3698698Z               "line": 123
2026-06-22T02:04:44.3698793Z             }
2026-06-22T02:04:44.3698879Z           ]
2026-06-22T02:04:44.3699031Z         },
2026-06-22T02:04:44.3699122Z         "impl": {
2026-06-22T02:04:44.3699217Z           "complete": true,
2026-06-22T02:04:44.3699317Z           "evidence": [
2026-06-22T02:04:44.3699393Z             {
2026-06-22T02:04:44.3699513Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3699599Z               "line": 287
2026-06-22T02:04:44.3699675Z             },
2026-06-22T02:04:44.3699761Z             {
2026-06-22T02:04:44.3699875Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3699970Z               "line": 301
2026-06-22T02:04:44.3700062Z             },
2026-06-22T02:04:44.3700138Z             {
2026-06-22T02:04:44.3700252Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3700333Z               "line": 326
2026-06-22T02:04:44.3700425Z             },
2026-06-22T02:04:44.3700505Z             {
2026-06-22T02:04:44.3700628Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.3700710Z               "line": 239
2026-06-22T02:04:44.3700796Z             },
2026-06-22T02:04:44.3700871Z             {
2026-06-22T02:04:44.3700985Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3701071Z               "line": 95
2026-06-22T02:04:44.3701155Z             },
2026-06-22T02:04:44.3701236Z             {
2026-06-22T02:04:44.3701336Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3701427Z               "line": 2225
2026-06-22T02:04:44.3701512Z             },
2026-06-22T02:04:44.3701597Z             {
2026-06-22T02:04:44.3701803Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3701889Z               "line": 2274
2026-06-22T02:04:44.3701979Z             },
2026-06-22T02:04:44.3702066Z             {
2026-06-22T02:04:44.3702165Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3702250Z               "line": 2353
2026-06-22T02:04:44.3702442Z             },
2026-06-22T02:04:44.3702532Z             {
2026-06-22T02:04:44.3702633Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3702728Z               "line": 2392
2026-06-22T02:04:44.3702804Z             }
2026-06-22T02:04:44.3702890Z           ]
2026-06-22T02:04:44.3702973Z         },
2026-06-22T02:04:44.3703057Z         "int": {
2026-06-22T02:04:44.3703148Z           "complete": true,
2026-06-22T02:04:44.3703224Z           "evidence": [
2026-06-22T02:04:44.3703306Z             {
2026-06-22T02:04:44.3703429Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3703510Z               "line": 810
2026-06-22T02:04:44.3703597Z             },
2026-06-22T02:04:44.3703682Z             {
2026-06-22T02:04:44.3703804Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3703900Z               "line": 1345
2026-06-22T02:04:44.3703985Z             }
2026-06-22T02:04:44.3704074Z           ]
2026-06-22T02:04:44.3704159Z         },
2026-06-22T02:04:44.3704246Z         "unit": {
2026-06-22T02:04:44.3704332Z           "complete": true,
2026-06-22T02:04:44.3704427Z           "evidence": [
2026-06-22T02:04:44.3704508Z             {
2026-06-22T02:04:44.3704628Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3704718Z               "line": 1022
2026-06-22T02:04:44.3704793Z             },
2026-06-22T02:04:44.3704876Z             {
2026-06-22T02:04:44.3704985Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3705080Z               "line": 1090
2026-06-22T02:04:44.3705161Z             },
2026-06-22T02:04:44.3705248Z             {
2026-06-22T02:04:44.3705352Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3705442Z               "line": 8210
2026-06-22T02:04:44.3705530Z             },
2026-06-22T02:04:44.3705610Z             {
2026-06-22T02:04:44.3705714Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3705796Z               "line": 8265
2026-06-22T02:04:44.3705882Z             }
2026-06-22T02:04:44.3705995Z           ]
2026-06-22T02:04:44.3706096Z         }
2026-06-22T02:04:44.3706192Z       }
2026-06-22T02:04:44.3706277Z     },
2026-06-22T02:04:44.3706366Z     {
2026-06-22T02:04:44.3706462Z       "id": "REQ-PAIR-1",
2026-06-22T02:04:44.3706576Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-22T02:04:44.3706674Z       "requiredStages": [
2026-06-22T02:04:44.3706755Z         "impl",
2026-06-22T02:04:44.3706846Z         "unit",
2026-06-22T02:04:44.3706933Z         "int"
2026-06-22T02:04:44.3707022Z       ],
2026-06-22T02:04:44.3707108Z       "stages": {
2026-06-22T02:04:44.3707185Z         "doc": {
2026-06-22T02:04:44.3707285Z           "complete": false,
2026-06-22T02:04:44.3707370Z           "evidence": []
2026-06-22T02:04:44.3707457Z         },
2026-06-22T02:04:44.3707538Z         "impl": {
2026-06-22T02:04:44.3707623Z           "complete": true,
2026-06-22T02:04:44.3707714Z           "evidence": [
2026-06-22T02:04:44.3707805Z             {
2026-06-22T02:04:44.3707943Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3708024Z               "line": 27
2026-06-22T02:04:44.3708110Z             },
2026-06-22T02:04:44.3708195Z             {
2026-06-22T02:04:44.3708319Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3708406Z               "line": 88
2026-06-22T02:04:44.3708491Z             },
2026-06-22T02:04:44.3708577Z             {
2026-06-22T02:04:44.3708707Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3708806Z               "line": 110
2026-06-22T02:04:44.3708886Z             },
2026-06-22T02:04:44.3709163Z             {
2026-06-22T02:04:44.3709286Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3709386Z               "line": 153
2026-06-22T02:04:44.3709474Z             },
2026-06-22T02:04:44.3709557Z             {
2026-06-22T02:04:44.3709687Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3709872Z               "line": 182
2026-06-22T02:04:44.3709958Z             },
2026-06-22T02:04:44.3710045Z             {
2026-06-22T02:04:44.3710173Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3710259Z               "line": 29
2026-06-22T02:04:44.3710341Z             },
2026-06-22T02:04:44.3710431Z             {
2026-06-22T02:04:44.3710574Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:04:44.3710661Z               "line": 31
2026-06-22T02:04:44.3710750Z             },
2026-06-22T02:04:44.3710831Z             {
2026-06-22T02:04:44.3710961Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3711051Z               "line": 44
2026-06-22T02:04:44.3711131Z             },
2026-06-22T02:04:44.3711208Z             {
2026-06-22T02:04:44.3711329Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3711417Z               "line": 171
2026-06-22T02:04:44.3711498Z             },
2026-06-22T02:04:44.3711583Z             {
2026-06-22T02:04:44.3711711Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3711801Z               "line": 376
2026-06-22T02:04:44.3711886Z             }
2026-06-22T02:04:44.3711963Z           ]
2026-06-22T02:04:44.3712044Z         },
2026-06-22T02:04:44.3712129Z         "int": {
2026-06-22T02:04:44.3712225Z           "complete": true,
2026-06-22T02:04:44.3712306Z           "evidence": [
2026-06-22T02:04:44.3712392Z             {
2026-06-22T02:04:44.3712510Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3712602Z               "line": 645
2026-06-22T02:04:44.3712688Z             },
2026-06-22T02:04:44.3712768Z             {
2026-06-22T02:04:44.3712893Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3712978Z               "line": 887
2026-06-22T02:04:44.3713069Z             }
2026-06-22T02:04:44.3713154Z           ]
2026-06-22T02:04:44.3715907Z         },
2026-06-22T02:04:44.3716017Z         "unit": {
2026-06-22T02:04:44.3716123Z           "complete": true,
2026-06-22T02:04:44.3716217Z           "evidence": [
2026-06-22T02:04:44.3716298Z             {
2026-06-22T02:04:44.3716447Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3716536Z               "line": 236
2026-06-22T02:04:44.3716623Z             },
2026-06-22T02:04:44.3716705Z             {
2026-06-22T02:04:44.3716837Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:04:44.3716931Z               "line": 349
2026-06-22T02:04:44.3717017Z             },
2026-06-22T02:04:44.3717103Z             {
2026-06-22T02:04:44.3717244Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3717339Z               "line": 194
2026-06-22T02:04:44.3717421Z             },
2026-06-22T02:04:44.3717502Z             {
2026-06-22T02:04:44.3717630Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3717717Z               "line": 216
2026-06-22T02:04:44.3717802Z             },
2026-06-22T02:04:44.3717878Z             {
2026-06-22T02:04:44.3718008Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3718103Z               "line": 230
2026-06-22T02:04:44.3718183Z             },
2026-06-22T02:04:44.3718269Z             {
2026-06-22T02:04:44.3718393Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3718479Z               "line": 242
2026-06-22T02:04:44.3718564Z             },
2026-06-22T02:04:44.3718647Z             {
2026-06-22T02:04:44.3718770Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3719042Z               "line": 256
2026-06-22T02:04:44.3719117Z             },
2026-06-22T02:04:44.3719203Z             {
2026-06-22T02:04:44.3719329Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3719418Z               "line": 270
2026-06-22T02:04:44.3719596Z             },
2026-06-22T02:04:44.3719686Z             {
2026-06-22T02:04:44.3719794Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3719879Z               "line": 277
2026-06-22T02:04:44.3719966Z             },
2026-06-22T02:04:44.3720048Z             {
2026-06-22T02:04:44.3720170Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:04:44.3720256Z               "line": 295
2026-06-22T02:04:44.3720338Z             },
2026-06-22T02:04:44.3720423Z             {
2026-06-22T02:04:44.3720548Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3720629Z               "line": 968
2026-06-22T02:04:44.3720710Z             },
2026-06-22T02:04:44.3720799Z             {
2026-06-22T02:04:44.3720920Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3721000Z               "line": 1051
2026-06-22T02:04:44.3721086Z             },
2026-06-22T02:04:44.3721167Z             {
2026-06-22T02:04:44.3721282Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3721377Z               "line": 1121
2026-06-22T02:04:44.3721458Z             },
2026-06-22T02:04:44.3721545Z             {
2026-06-22T02:04:44.3721667Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3721739Z               "line": 1182
2026-06-22T02:04:44.3721821Z             },
2026-06-22T02:04:44.3721903Z             {
2026-06-22T02:04:44.3722024Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3722105Z               "line": 1238
2026-06-22T02:04:44.3722186Z             },
2026-06-22T02:04:44.3722267Z             {
2026-06-22T02:04:44.3722389Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3722470Z               "line": 1457
2026-06-22T02:04:44.3722557Z             }
2026-06-22T02:04:44.3722642Z           ]
2026-06-22T02:04:44.3722728Z         }
2026-06-22T02:04:44.3722809Z       }
2026-06-22T02:04:44.3722895Z     },
2026-06-22T02:04:44.3722980Z     {
2026-06-22T02:04:44.3723075Z       "id": "REQ-PAIR-2",
2026-06-22T02:04:44.3723209Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-22T02:04:44.3723314Z       "requiredStages": [],
2026-06-22T02:04:44.3723405Z       "stages": {
2026-06-22T02:04:44.3723477Z         "doc": {
2026-06-22T02:04:44.3723577Z           "complete": false,
2026-06-22T02:04:44.3723657Z           "evidence": []
2026-06-22T02:04:44.3723739Z         },
2026-06-22T02:04:44.3723821Z         "impl": {
2026-06-22T02:04:44.3723916Z           "complete": false,
2026-06-22T02:04:44.3724006Z           "evidence": []
2026-06-22T02:04:44.3724088Z         },
2026-06-22T02:04:44.3724177Z         "int": {
2026-06-22T02:04:44.3724268Z           "complete": false,
2026-06-22T02:04:44.3724349Z           "evidence": []
2026-06-22T02:04:44.3724432Z         },
2026-06-22T02:04:44.3724515Z         "unit": {
2026-06-22T02:04:44.3724602Z           "complete": false,
2026-06-22T02:04:44.3724689Z           "evidence": []
2026-06-22T02:04:44.3724761Z         }
2026-06-22T02:04:44.3724840Z       }
2026-06-22T02:04:44.3724925Z     },
2026-06-22T02:04:44.3724996Z     {
2026-06-22T02:04:44.3725092Z       "id": "REQ-PAIR-3",
2026-06-22T02:04:44.3725237Z       "title": "Fetch current pairing code from any paired node",
2026-06-22T02:04:44.3725333Z       "requiredStages": [
2026-06-22T02:04:44.3725419Z         "impl",
2026-06-22T02:04:44.3725495Z         "unit"
2026-06-22T02:04:44.3725571Z       ],
2026-06-22T02:04:44.3725657Z       "stages": {
2026-06-22T02:04:44.3725743Z         "doc": {
2026-06-22T02:04:44.3725824Z           "complete": false,
2026-06-22T02:04:44.3725909Z           "evidence": []
2026-06-22T02:04:44.3726096Z         },
2026-06-22T02:04:44.3726181Z         "impl": {
2026-06-22T02:04:44.3726272Z           "complete": true,
2026-06-22T02:04:44.3726359Z           "evidence": [
2026-06-22T02:04:44.3726444Z             {
2026-06-22T02:04:44.3726558Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3726716Z               "line": 3259
2026-06-22T02:04:44.3726796Z             },
2026-06-22T02:04:44.3726878Z             {
2026-06-22T02:04:44.3726974Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3727054Z               "line": 3328
2026-06-22T02:04:44.3727144Z             },
2026-06-22T02:04:44.3727236Z             {
2026-06-22T02:04:44.3727336Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3727425Z               "line": 3709
2026-06-22T02:04:44.3727510Z             },
2026-06-22T02:04:44.3727591Z             {
2026-06-22T02:04:44.3727691Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3727780Z               "line": 4961
2026-06-22T02:04:44.3727861Z             }
2026-06-22T02:04:44.3727943Z           ]
2026-06-22T02:04:44.3728029Z         },
2026-06-22T02:04:44.3728114Z         "int": {
2026-06-22T02:04:44.3728209Z           "complete": false,
2026-06-22T02:04:44.3728291Z           "evidence": []
2026-06-22T02:04:44.3728382Z         },
2026-06-22T02:04:44.3728457Z         "unit": {
2026-06-22T02:04:44.3728538Z           "complete": true,
2026-06-22T02:04:44.3728624Z           "evidence": [
2026-06-22T02:04:44.3728710Z             {
2026-06-22T02:04:44.3728814Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3728897Z               "line": 9964
2026-06-22T02:04:44.3729072Z             },
2026-06-22T02:04:44.3729153Z             {
2026-06-22T02:04:44.3729259Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3729354Z               "line": 10179
2026-06-22T02:04:44.3729425Z             },
2026-06-22T02:04:44.3729507Z             {
2026-06-22T02:04:44.3729611Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3729697Z               "line": 10838
2026-06-22T02:04:44.3729783Z             },
2026-06-22T02:04:44.3729865Z             {
2026-06-22T02:04:44.3729959Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3730045Z               "line": 10857
2026-06-22T02:04:44.3730132Z             },
2026-06-22T02:04:44.3730213Z             {
2026-06-22T02:04:44.3730321Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3730416Z               "line": 10881
2026-06-22T02:04:44.3730488Z             },
2026-06-22T02:04:44.3730569Z             {
2026-06-22T02:04:44.3730669Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3730750Z               "line": 10900
2026-06-22T02:04:44.3730836Z             },
2026-06-22T02:04:44.3730917Z             {
2026-06-22T02:04:44.3731016Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3731098Z               "line": 10913
2026-06-22T02:04:44.3731189Z             },
2026-06-22T02:04:44.3731275Z             {
2026-06-22T02:04:44.3731379Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3731461Z               "line": 10922
2026-06-22T02:04:44.3731546Z             }
2026-06-22T02:04:44.3731637Z           ]
2026-06-22T02:04:44.3731703Z         }
2026-06-22T02:04:44.3731790Z       }
2026-06-22T02:04:44.3731875Z     },
2026-06-22T02:04:44.3731961Z     {
2026-06-22T02:04:44.3732042Z       "id": "REQ-PAIR-4",
2026-06-22T02:04:44.3732152Z       "title": "Subnet naming on first pairing",
2026-06-22T02:04:44.3732246Z       "requiredStages": [
2026-06-22T02:04:44.3732333Z         "impl",
2026-06-22T02:04:44.3732415Z         "unit"
2026-06-22T02:04:44.3732496Z       ],
2026-06-22T02:04:44.3732580Z       "stages": {
2026-06-22T02:04:44.3732656Z         "doc": {
2026-06-22T02:04:44.3732756Z           "complete": false,
2026-06-22T02:04:44.3732836Z           "evidence": []
2026-06-22T02:04:44.3732921Z         },
2026-06-22T02:04:44.3733001Z         "impl": {
2026-06-22T02:04:44.3733212Z           "complete": true,
2026-06-22T02:04:44.3733297Z           "evidence": [
2026-06-22T02:04:44.3733364Z             {
2026-06-22T02:04:44.3733489Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:04:44.3733583Z               "line": 174
2026-06-22T02:04:44.3733660Z             }
2026-06-22T02:04:44.3733837Z           ]
2026-06-22T02:04:44.3733912Z         },
2026-06-22T02:04:44.3733999Z         "int": {
2026-06-22T02:04:44.3734085Z           "complete": false,
2026-06-22T02:04:44.3734166Z           "evidence": []
2026-06-22T02:04:44.3734251Z         },
2026-06-22T02:04:44.3734338Z         "unit": {
2026-06-22T02:04:44.3734427Z           "complete": true,
2026-06-22T02:04:44.3734513Z           "evidence": [
2026-06-22T02:04:44.3734594Z             {
2026-06-22T02:04:44.3734724Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3734814Z               "line": 1294
2026-06-22T02:04:44.3734900Z             }
2026-06-22T02:04:44.3734982Z           ]
2026-06-22T02:04:44.3735071Z         }
2026-06-22T02:04:44.3735152Z       }
2026-06-22T02:04:44.3735234Z     },
2026-06-22T02:04:44.3735311Z     {
2026-06-22T02:04:44.3735395Z       "id": "REQ-PAIR-5",
2026-06-22T02:04:44.3735694Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-22T02:04:44.3735793Z       "requiredStages": [
2026-06-22T02:04:44.3735878Z         "impl",
2026-06-22T02:04:44.3735960Z         "unit",
2026-06-22T02:04:44.3736051Z         "int"
2026-06-22T02:04:44.3736131Z       ],
2026-06-22T02:04:44.3736217Z       "stages": {
2026-06-22T02:04:44.3736303Z         "doc": {
2026-06-22T02:04:44.3736394Z           "complete": false,
2026-06-22T02:04:44.3736484Z           "evidence": []
2026-06-22T02:04:44.3736566Z         },
2026-06-22T02:04:44.3736651Z         "impl": {
2026-06-22T02:04:44.3736736Z           "complete": true,
2026-06-22T02:04:44.3736827Z           "evidence": [
2026-06-22T02:04:44.3736914Z             {
2026-06-22T02:04:44.3737042Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3737132Z               "line": 44
2026-06-22T02:04:44.3737215Z             },
2026-06-22T02:04:44.3737299Z             {
2026-06-22T02:04:44.3737423Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3737510Z               "line": 96
2026-06-22T02:04:44.3737591Z             },
2026-06-22T02:04:44.3737676Z             {
2026-06-22T02:04:44.3737801Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3737883Z               "line": 107
2026-06-22T02:04:44.3737967Z             },
2026-06-22T02:04:44.3738047Z             {
2026-06-22T02:04:44.3738171Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3738265Z               "line": 124
2026-06-22T02:04:44.3738340Z             },
2026-06-22T02:04:44.3738425Z             {
2026-06-22T02:04:44.3738546Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3738631Z               "line": 155
2026-06-22T02:04:44.3738712Z             },
2026-06-22T02:04:44.3738788Z             {
2026-06-22T02:04:44.3738913Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3739055Z               "line": 195
2026-06-22T02:04:44.3739147Z             },
2026-06-22T02:04:44.3739228Z             {
2026-06-22T02:04:44.3739346Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3739428Z               "line": 251
2026-06-22T02:04:44.3739509Z             },
2026-06-22T02:04:44.3739599Z             {
2026-06-22T02:04:44.3739738Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3739819Z               "line": 33
2026-06-22T02:04:44.3739900Z             },
2026-06-22T02:04:44.3739981Z             {
2026-06-22T02:04:44.3740134Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3740214Z               "line": 45
2026-06-22T02:04:44.3740401Z             },
2026-06-22T02:04:44.3740486Z             {
2026-06-22T02:04:44.3740625Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3740706Z               "line": 59
2026-06-22T02:04:44.3740801Z             },
2026-06-22T02:04:44.3740886Z             {
2026-06-22T02:04:44.3741101Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3741191Z               "line": 376
2026-06-22T02:04:44.3741271Z             }
2026-06-22T02:04:44.3741358Z           ]
2026-06-22T02:04:44.3741440Z         },
2026-06-22T02:04:44.3741529Z         "int": {
2026-06-22T02:04:44.3741614Z           "complete": true,
2026-06-22T02:04:44.3741702Z           "evidence": [
2026-06-22T02:04:44.3741778Z             {
2026-06-22T02:04:44.3741896Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3741977Z               "line": 887
2026-06-22T02:04:44.3742054Z             },
2026-06-22T02:04:44.3742135Z             {
2026-06-22T02:04:44.3742258Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3742345Z               "line": 342
2026-06-22T02:04:44.3742431Z             }
2026-06-22T02:04:44.3742507Z           ]
2026-06-22T02:04:44.3742593Z         },
2026-06-22T02:04:44.3742679Z         "unit": {
2026-06-22T02:04:44.3742760Z           "complete": true,
2026-06-22T02:04:44.3742845Z           "evidence": [
2026-06-22T02:04:44.3742927Z             {
2026-06-22T02:04:44.3743046Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3743135Z               "line": 293
2026-06-22T02:04:44.3743221Z             },
2026-06-22T02:04:44.3743302Z             {
2026-06-22T02:04:44.3743415Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3743500Z               "line": 304
2026-06-22T02:04:44.3743581Z             },
2026-06-22T02:04:44.3743668Z             {
2026-06-22T02:04:44.3743786Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.3743872Z               "line": 406
2026-06-22T02:04:44.3743953Z             },
2026-06-22T02:04:44.3744034Z             {
2026-06-22T02:04:44.3744167Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3744254Z               "line": 72
2026-06-22T02:04:44.3744339Z             },
2026-06-22T02:04:44.3744425Z             {
2026-06-22T02:04:44.3744555Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3744640Z               "line": 82
2026-06-22T02:04:44.3744716Z             },
2026-06-22T02:04:44.3744796Z             {
2026-06-22T02:04:44.3744922Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3745006Z               "line": 100
2026-06-22T02:04:44.3745078Z             },
2026-06-22T02:04:44.3745164Z             {
2026-06-22T02:04:44.3745303Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3745384Z               "line": 110
2026-06-22T02:04:44.3745460Z             },
2026-06-22T02:04:44.3745532Z             {
2026-06-22T02:04:44.3745669Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:04:44.3745755Z               "line": 125
2026-06-22T02:04:44.3745842Z             },
2026-06-22T02:04:44.3745923Z             {
2026-06-22T02:04:44.3746045Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3746136Z               "line": 1044
2026-06-22T02:04:44.3746217Z             },
2026-06-22T02:04:44.3746306Z             {
2026-06-22T02:04:44.3746428Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3746515Z               "line": 1110
2026-06-22T02:04:44.3746607Z             },
2026-06-22T02:04:44.3746686Z             {
2026-06-22T02:04:44.3746801Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.3746887Z               "line": 1357
2026-06-22T02:04:44.3746968Z             }
2026-06-22T02:04:44.3747058Z           ]
2026-06-22T02:04:44.3747211Z         }
2026-06-22T02:04:44.3747297Z       }
2026-06-22T02:04:44.3747383Z     },
2026-06-22T02:04:44.3747469Z     {
2026-06-22T02:04:44.3747554Z       "id": "REQ-PAIR-6",
2026-06-22T02:04:44.3747818Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-22T02:04:44.3747974Z       "requiredStages": [
2026-06-22T02:04:44.3748056Z         "impl",
2026-06-22T02:04:44.3748142Z         "unit"
2026-06-22T02:04:44.3748221Z       ],
2026-06-22T02:04:44.3748308Z       "stages": {
2026-06-22T02:04:44.3748395Z         "doc": {
2026-06-22T02:04:44.3748490Z           "complete": false,
2026-06-22T02:04:44.3748574Z           "evidence": []
2026-06-22T02:04:44.3748654Z         },
2026-06-22T02:04:44.3748741Z         "impl": {
2026-06-22T02:04:44.3748825Z           "complete": true,
2026-06-22T02:04:44.3748920Z           "evidence": [
2026-06-22T02:04:44.3749087Z             {
2026-06-22T02:04:44.3749187Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3749282Z               "line": 3328
2026-06-22T02:04:44.3749368Z             },
2026-06-22T02:04:44.3749463Z             {
2026-06-22T02:04:44.3749568Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3749649Z               "line": 3709
2026-06-22T02:04:44.3749735Z             },
2026-06-22T02:04:44.3749817Z             {
2026-06-22T02:04:44.3749935Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.3750008Z               "line": 18
2026-06-22T02:04:44.3750097Z             },
2026-06-22T02:04:44.3750178Z             {
2026-06-22T02:04:44.3750298Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.3750375Z               "line": 49
2026-06-22T02:04:44.3750455Z             },
2026-06-22T02:04:44.3750536Z             {
2026-06-22T02:04:44.3750647Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.3750727Z               "line": 318
2026-06-22T02:04:44.3750812Z             }
2026-06-22T02:04:44.3750898Z           ]
2026-06-22T02:04:44.3750981Z         },
2026-06-22T02:04:44.3751065Z         "int": {
2026-06-22T02:04:44.3751165Z           "complete": false,
2026-06-22T02:04:44.3751252Z           "evidence": []
2026-06-22T02:04:44.3751333Z         },
2026-06-22T02:04:44.3751422Z         "unit": {
2026-06-22T02:04:44.3751516Z           "complete": true,
2026-06-22T02:04:44.3751598Z           "evidence": [
2026-06-22T02:04:44.3751690Z             {
2026-06-22T02:04:44.3751794Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3751875Z               "line": 10935
2026-06-22T02:04:44.3751961Z             },
2026-06-22T02:04:44.3752042Z             {
2026-06-22T02:04:44.3752146Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3752233Z               "line": 10952
2026-06-22T02:04:44.3752323Z             },
2026-06-22T02:04:44.3752400Z             {
2026-06-22T02:04:44.3752504Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.3752586Z               "line": 383
2026-06-22T02:04:44.3752676Z             },
2026-06-22T02:04:44.3752757Z             {
2026-06-22T02:04:44.3752867Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:04:44.3752953Z               "line": 392
2026-06-22T02:04:44.3753038Z             }
2026-06-22T02:04:44.3753124Z           ]
2026-06-22T02:04:44.3753202Z         }
2026-06-22T02:04:44.3753287Z       }
2026-06-22T02:04:44.3753371Z     },
2026-06-22T02:04:44.3753458Z     {
2026-06-22T02:04:44.3753554Z       "id": "REQ-PAIR-7",
2026-06-22T02:04:44.3753719Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-22T02:04:44.3753800Z       "requiredStages": [],
2026-06-22T02:04:44.3753886Z       "stages": {
2026-06-22T02:04:44.3753970Z         "doc": {
2026-06-22T02:04:44.3754060Z           "complete": false,
2026-06-22T02:04:44.3754146Z           "evidence": []
2026-06-22T02:04:44.3754233Z         },
2026-06-22T02:04:44.3754327Z         "impl": {
2026-06-22T02:04:44.3754412Z           "complete": false,
2026-06-22T02:04:44.3754609Z           "evidence": []
2026-06-22T02:04:44.3754685Z         },
2026-06-22T02:04:44.3754770Z         "int": {
2026-06-22T02:04:44.3754857Z           "complete": false,
2026-06-22T02:04:44.3754952Z           "evidence": []
2026-06-22T02:04:44.3755037Z         },
2026-06-22T02:04:44.3755205Z         "unit": {
2026-06-22T02:04:44.3755300Z           "complete": false,
2026-06-22T02:04:44.3755381Z           "evidence": []
2026-06-22T02:04:44.3755467Z         }
2026-06-22T02:04:44.3755553Z       }
2026-06-22T02:04:44.3755624Z     },
2026-06-22T02:04:44.3755705Z     {
2026-06-22T02:04:44.3755797Z       "id": "REQ-PAIR-8",
2026-06-22T02:04:44.3757137Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-22T02:04:44.3757246Z       "requiredStages": [
2026-06-22T02:04:44.3757347Z         "impl",
2026-06-22T02:04:44.3757429Z         "unit"
2026-06-22T02:04:44.3757505Z       ],
2026-06-22T02:04:44.3757589Z       "stages": {
2026-06-22T02:04:44.3757672Z         "doc": {
2026-06-22T02:04:44.3757772Z           "complete": false,
2026-06-22T02:04:44.3757853Z           "evidence": []
2026-06-22T02:04:44.3757938Z         },
2026-06-22T02:04:44.3758025Z         "impl": {
2026-06-22T02:04:44.3758119Z           "complete": true,
2026-06-22T02:04:44.3758219Z           "evidence": [
2026-06-22T02:04:44.3758301Z             {
2026-06-22T02:04:44.3758429Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.3758515Z               "line": 577
2026-06-22T02:04:44.3758596Z             },
2026-06-22T02:04:44.3758683Z             {
2026-06-22T02:04:44.3758815Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3758902Z               "line": 22
2026-06-22T02:04:44.3759055Z             },
2026-06-22T02:04:44.3759143Z             {
2026-06-22T02:04:44.3759268Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3759353Z               "line": 76
2026-06-22T02:04:44.3759441Z             },
2026-06-22T02:04:44.3759522Z             {
2026-06-22T02:04:44.3759637Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3759715Z               "line": 127
2026-06-22T02:04:44.3759837Z             }
2026-06-22T02:04:44.3759914Z           ]
2026-06-22T02:04:44.3760005Z         },
2026-06-22T02:04:44.3760094Z         "int": {
2026-06-22T02:04:44.3760185Z           "complete": false,
2026-06-22T02:04:44.3760282Z           "evidence": []
2026-06-22T02:04:44.3760357Z         },
2026-06-22T02:04:44.3760447Z         "unit": {
2026-06-22T02:04:44.3760539Z           "complete": true,
2026-06-22T02:04:44.3760629Z           "evidence": [
2026-06-22T02:04:44.3760715Z             {
2026-06-22T02:04:44.3760843Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3760926Z               "line": 183
2026-06-22T02:04:44.3761010Z             },
2026-06-22T02:04:44.3761096Z             {
2026-06-22T02:04:44.3761216Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3761306Z               "line": 195
2026-06-22T02:04:44.3761392Z             },
2026-06-22T02:04:44.3761478Z             {
2026-06-22T02:04:44.3761607Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3761697Z               "line": 211
2026-06-22T02:04:44.3761778Z             },
2026-06-22T02:04:44.3761865Z             {
2026-06-22T02:04:44.3761982Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:04:44.3762077Z               "line": 227
2026-06-22T02:04:44.3762158Z             }
2026-06-22T02:04:44.3762255Z           ]
2026-06-22T02:04:44.3762330Z         }
2026-06-22T02:04:44.3762545Z       }
2026-06-22T02:04:44.3762635Z     },
2026-06-22T02:04:44.3762721Z     {
2026-06-22T02:04:44.3762822Z       "id": "REQ-PICKER-1",
2026-06-22T02:04:44.3766347Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-22T02:04:44.3766575Z       "requiredStages": [
2026-06-22T02:04:44.3766667Z         "impl",
2026-06-22T02:04:44.3766752Z         "unit"
2026-06-22T02:04:44.3766843Z       ],
2026-06-22T02:04:44.3766938Z       "stages": {
2026-06-22T02:04:44.3767025Z         "doc": {
2026-06-22T02:04:44.3767119Z           "complete": false,
2026-06-22T02:04:44.3767208Z           "evidence": []
2026-06-22T02:04:44.3767295Z         },
2026-06-22T02:04:44.3767374Z         "impl": {
2026-06-22T02:04:44.3767464Z           "complete": true,
2026-06-22T02:04:44.3767544Z           "evidence": [
2026-06-22T02:04:44.3767626Z             {
2026-06-22T02:04:44.3767759Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3767844Z               "line": 248
2026-06-22T02:04:44.3767931Z             },
2026-06-22T02:04:44.3768017Z             {
2026-06-22T02:04:44.3768131Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3768217Z               "line": 263
2026-06-22T02:04:44.3768289Z             }
2026-06-22T02:04:44.3768370Z           ]
2026-06-22T02:04:44.3768455Z         },
2026-06-22T02:04:44.3768541Z         "int": {
2026-06-22T02:04:44.3768628Z           "complete": false,
2026-06-22T02:04:44.3768718Z           "evidence": []
2026-06-22T02:04:44.3768793Z         },
2026-06-22T02:04:44.3768871Z         "unit": {
2026-06-22T02:04:44.3769041Z           "complete": true,
2026-06-22T02:04:44.3769123Z           "evidence": [
2026-06-22T02:04:44.3769205Z             {
2026-06-22T02:04:44.3769319Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3769395Z               "line": 476
2026-06-22T02:04:44.3769491Z             },
2026-06-22T02:04:44.3769568Z             {
2026-06-22T02:04:44.3769685Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3769775Z               "line": 753
2026-06-22T02:04:44.3769856Z             },
2026-06-22T02:04:44.3769937Z             {
2026-06-22T02:04:44.3770058Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3770150Z               "line": 886
2026-06-22T02:04:44.3770222Z             },
2026-06-22T02:04:44.3770308Z             {
2026-06-22T02:04:44.3770411Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3770493Z               "line": 455
2026-06-22T02:04:44.3770569Z             }
2026-06-22T02:04:44.3770650Z           ]
2026-06-22T02:04:44.3770741Z         }
2026-06-22T02:04:44.3770823Z       }
2026-06-22T02:04:44.3770903Z     },
2026-06-22T02:04:44.3770988Z     {
2026-06-22T02:04:44.3771094Z       "id": "REQ-PICKER-2",
2026-06-22T02:04:44.3772952Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-22T02:04:44.3773252Z       "requiredStages": [
2026-06-22T02:04:44.3773339Z         "impl",
2026-06-22T02:04:44.3773429Z         "unit"
2026-06-22T02:04:44.3773515Z       ],
2026-06-22T02:04:44.3773600Z       "stages": {
2026-06-22T02:04:44.3773682Z         "doc": {
2026-06-22T02:04:44.3773772Z           "complete": false,
2026-06-22T02:04:44.3773853Z           "evidence": []
2026-06-22T02:04:44.3773944Z         },
2026-06-22T02:04:44.3774036Z         "impl": {
2026-06-22T02:04:44.3774120Z           "complete": true,
2026-06-22T02:04:44.3774216Z           "evidence": [
2026-06-22T02:04:44.3774298Z             {
2026-06-22T02:04:44.3774426Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3774511Z               "line": 183
2026-06-22T02:04:44.3774597Z             },
2026-06-22T02:04:44.3774680Z             {
2026-06-22T02:04:44.3774787Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3774877Z               "line": 296
2026-06-22T02:04:44.3774953Z             }
2026-06-22T02:04:44.3775039Z           ]
2026-06-22T02:04:44.3775128Z         },
2026-06-22T02:04:44.3775213Z         "int": {
2026-06-22T02:04:44.3775310Z           "complete": false,
2026-06-22T02:04:44.3775396Z           "evidence": []
2026-06-22T02:04:44.3775485Z         },
2026-06-22T02:04:44.3775572Z         "unit": {
2026-06-22T02:04:44.3775653Z           "complete": true,
2026-06-22T02:04:44.3775743Z           "evidence": [
2026-06-22T02:04:44.3775838Z             {
2026-06-22T02:04:44.3775968Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.3776053Z               "line": 655
2026-06-22T02:04:44.3776143Z             }
2026-06-22T02:04:44.3776230Z           ]
2026-06-22T02:04:44.3776315Z         }
2026-06-22T02:04:44.3776401Z       }
2026-06-22T02:04:44.3776491Z     },
2026-06-22T02:04:44.3776583Z     {
2026-06-22T02:04:44.3776673Z       "id": "REQ-PICKER-3",
2026-06-22T02:04:44.3779173Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-22T02:04:44.3779283Z       "requiredStages": [
2026-06-22T02:04:44.3779368Z         "impl",
2026-06-22T02:04:44.3779455Z         "unit"
2026-06-22T02:04:44.3779540Z       ],
2026-06-22T02:04:44.3779626Z       "stages": {
2026-06-22T02:04:44.3779707Z         "doc": {
2026-06-22T02:04:44.3779798Z           "complete": false,
2026-06-22T02:04:44.3779888Z           "evidence": []
2026-06-22T02:04:44.3779974Z         },
2026-06-22T02:04:44.3780061Z         "impl": {
2026-06-22T02:04:44.3780156Z           "complete": true,
2026-06-22T02:04:44.3780240Z           "evidence": [
2026-06-22T02:04:44.3780325Z             {
2026-06-22T02:04:44.3780430Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3780628Z               "line": 124
2026-06-22T02:04:44.3780710Z             }
2026-06-22T02:04:44.3780792Z           ]
2026-06-22T02:04:44.3780868Z         },
2026-06-22T02:04:44.3780952Z         "int": {
2026-06-22T02:04:44.3781044Z           "complete": false,
2026-06-22T02:04:44.3781130Z           "evidence": []
2026-06-22T02:04:44.3781315Z         },
2026-06-22T02:04:44.3781392Z         "unit": {
2026-06-22T02:04:44.3781482Z           "complete": true,
2026-06-22T02:04:44.3781567Z           "evidence": [
2026-06-22T02:04:44.3781649Z             {
2026-06-22T02:04:44.3781759Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3781850Z               "line": 369
2026-06-22T02:04:44.3781940Z             }
2026-06-22T02:04:44.3782022Z           ]
2026-06-22T02:04:44.3782098Z         }
2026-06-22T02:04:44.3782183Z       }
2026-06-22T02:04:44.3782255Z     },
2026-06-22T02:04:44.3782341Z     {
2026-06-22T02:04:44.3782441Z       "id": "REQ-PICKER-4",
2026-06-22T02:04:44.3784333Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-22T02:04:44.3784441Z       "requiredStages": [
2026-06-22T02:04:44.3784533Z         "impl",
2026-06-22T02:04:44.3784620Z         "unit"
2026-06-22T02:04:44.3784704Z       ],
2026-06-22T02:04:44.3784790Z       "stages": {
2026-06-22T02:04:44.3784877Z         "doc": {
2026-06-22T02:04:44.3784972Z           "complete": false,
2026-06-22T02:04:44.3785062Z           "evidence": []
2026-06-22T02:04:44.3785148Z         },
2026-06-22T02:04:44.3785240Z         "impl": {
2026-06-22T02:04:44.3785328Z           "complete": true,
2026-06-22T02:04:44.3785419Z           "evidence": [
2026-06-22T02:04:44.3785504Z             {
2026-06-22T02:04:44.3785636Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3785731Z               "line": 353
2026-06-22T02:04:44.3785807Z             },
2026-06-22T02:04:44.3785889Z             {
2026-06-22T02:04:44.3786007Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3786097Z               "line": 105
2026-06-22T02:04:44.3786184Z             }
2026-06-22T02:04:44.3786265Z           ]
2026-06-22T02:04:44.3786355Z         },
2026-06-22T02:04:44.3786436Z         "int": {
2026-06-22T02:04:44.3786537Z           "complete": false,
2026-06-22T02:04:44.3786628Z           "evidence": []
2026-06-22T02:04:44.3786713Z         },
2026-06-22T02:04:44.3786805Z         "unit": {
2026-06-22T02:04:44.3786895Z           "complete": true,
2026-06-22T02:04:44.3786985Z           "evidence": [
2026-06-22T02:04:44.3787061Z             {
2026-06-22T02:04:44.3787186Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3787271Z               "line": 1246
2026-06-22T02:04:44.3787352Z             },
2026-06-22T02:04:44.3787439Z             {
2026-06-22T02:04:44.3787547Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3787643Z               "line": 427
2026-06-22T02:04:44.3787730Z             }
2026-06-22T02:04:44.3790697Z           ]
2026-06-22T02:04:44.3790801Z         }
2026-06-22T02:04:44.3790885Z       }
2026-06-22T02:04:44.3790967Z     },
2026-06-22T02:04:44.3791038Z     {
2026-06-22T02:04:44.3791146Z       "id": "REQ-PICKER-5",
2026-06-22T02:04:44.3794173Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-22T02:04:44.3794531Z       "requiredStages": [
2026-06-22T02:04:44.3794612Z         "impl",
2026-06-22T02:04:44.3794696Z         "unit"
2026-06-22T02:04:44.3794788Z       ],
2026-06-22T02:04:44.3794874Z       "stages": {
2026-06-22T02:04:44.3794955Z         "doc": {
2026-06-22T02:04:44.3795055Z           "complete": false,
2026-06-22T02:04:44.3795151Z           "evidence": []
2026-06-22T02:04:44.3795240Z         },
2026-06-22T02:04:44.3795322Z         "impl": {
2026-06-22T02:04:44.3795418Z           "complete": true,
2026-06-22T02:04:44.3795509Z           "evidence": [
2026-06-22T02:04:44.3795593Z             {
2026-06-22T02:04:44.3795699Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3795786Z               "line": 1802
2026-06-22T02:04:44.3795875Z             }
2026-06-22T02:04:44.3795960Z           ]
2026-06-22T02:04:44.3796035Z         },
2026-06-22T02:04:44.3796122Z         "int": {
2026-06-22T02:04:44.3796211Z           "complete": false,
2026-06-22T02:04:44.3796306Z           "evidence": []
2026-06-22T02:04:44.3796391Z         },
2026-06-22T02:04:44.3796478Z         "unit": {
2026-06-22T02:04:44.3796563Z           "complete": true,
2026-06-22T02:04:44.3796662Z           "evidence": [
2026-06-22T02:04:44.3796749Z             {
2026-06-22T02:04:44.3796845Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3796934Z               "line": 7526
2026-06-22T02:04:44.3797021Z             }
2026-06-22T02:04:44.3797112Z           ]
2026-06-22T02:04:44.3797197Z         }
2026-06-22T02:04:44.3797283Z       }
2026-06-22T02:04:44.3797360Z     },
2026-06-22T02:04:44.3797445Z     {
2026-06-22T02:04:44.3797559Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-22T02:04:44.3799022Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-22T02:04:44.3799134Z       "requiredStages": [],
2026-06-22T02:04:44.3799219Z       "stages": {
2026-06-22T02:04:44.3799306Z         "doc": {
2026-06-22T02:04:44.3799402Z           "complete": false,
2026-06-22T02:04:44.3799477Z           "evidence": []
2026-06-22T02:04:44.3799568Z         },
2026-06-22T02:04:44.3799659Z         "impl": {
2026-06-22T02:04:44.3799740Z           "complete": false,
2026-06-22T02:04:44.3799821Z           "evidence": []
2026-06-22T02:04:44.3799898Z         },
2026-06-22T02:04:44.3799984Z         "int": {
2026-06-22T02:04:44.3800069Z           "complete": false,
2026-06-22T02:04:44.3800164Z           "evidence": []
2026-06-22T02:04:44.3800246Z         },
2026-06-22T02:04:44.3800322Z         "unit": {
2026-06-22T02:04:44.3800412Z           "complete": false,
2026-06-22T02:04:44.3800493Z           "evidence": []
2026-06-22T02:04:44.3800576Z         }
2026-06-22T02:04:44.3800660Z       }
2026-06-22T02:04:44.3800746Z     },
2026-06-22T02:04:44.3800919Z     {
2026-06-22T02:04:44.3801027Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-22T02:04:44.3802126Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-22T02:04:44.3802321Z       "requiredStages": [
2026-06-22T02:04:44.3802411Z         "impl",
2026-06-22T02:04:44.3802489Z         "unit"
2026-06-22T02:04:44.3802574Z       ],
2026-06-22T02:04:44.3802655Z       "stages": {
2026-06-22T02:04:44.3802735Z         "doc": {
2026-06-22T02:04:44.3802827Z           "complete": false,
2026-06-22T02:04:44.3802917Z           "evidence": []
2026-06-22T02:04:44.3803003Z         },
2026-06-22T02:04:44.3803094Z         "impl": {
2026-06-22T02:04:44.3803175Z           "complete": true,
2026-06-22T02:04:44.3803275Z           "evidence": [
2026-06-22T02:04:44.3803351Z             {
2026-06-22T02:04:44.3803471Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3803556Z               "line": 275
2026-06-22T02:04:44.3803642Z             }
2026-06-22T02:04:44.3803728Z           ]
2026-06-22T02:04:44.3803810Z         },
2026-06-22T02:04:44.3803889Z         "int": {
2026-06-22T02:04:44.3803971Z           "complete": false,
2026-06-22T02:04:44.3804067Z           "evidence": []
2026-06-22T02:04:44.3804148Z         },
2026-06-22T02:04:44.3804232Z         "unit": {
2026-06-22T02:04:44.3804332Z           "complete": true,
2026-06-22T02:04:44.3804409Z           "evidence": [
2026-06-22T02:04:44.3804495Z             {
2026-06-22T02:04:44.3804608Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3804689Z               "line": 400
2026-06-22T02:04:44.3804777Z             }
2026-06-22T02:04:44.3804862Z           ]
2026-06-22T02:04:44.3804942Z         }
2026-06-22T02:04:44.3805024Z       }
2026-06-22T02:04:44.3805110Z     },
2026-06-22T02:04:44.3805187Z     {
2026-06-22T02:04:44.3805300Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-22T02:04:44.3806861Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-22T02:04:44.3806966Z       "requiredStages": [
2026-06-22T02:04:44.3807052Z         "impl",
2026-06-22T02:04:44.3807133Z         "unit"
2026-06-22T02:04:44.3807218Z       ],
2026-06-22T02:04:44.3807295Z       "stages": {
2026-06-22T02:04:44.3807376Z         "doc": {
2026-06-22T02:04:44.3807471Z           "complete": false,
2026-06-22T02:04:44.3807556Z           "evidence": []
2026-06-22T02:04:44.3807644Z         },
2026-06-22T02:04:44.3807729Z         "impl": {
2026-06-22T02:04:44.3807814Z           "complete": true,
2026-06-22T02:04:44.3807901Z           "evidence": [
2026-06-22T02:04:44.3807987Z             {
2026-06-22T02:04:44.3808105Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3808191Z               "line": 654
2026-06-22T02:04:44.3808278Z             }
2026-06-22T02:04:44.3808358Z           ]
2026-06-22T02:04:44.3808443Z         },
2026-06-22T02:04:44.3808530Z         "int": {
2026-06-22T02:04:44.3808622Z           "complete": false,
2026-06-22T02:04:44.3808710Z           "evidence": []
2026-06-22T02:04:44.3808787Z         },
2026-06-22T02:04:44.3808874Z         "unit": {
2026-06-22T02:04:44.3809039Z           "complete": true,
2026-06-22T02:04:44.3809126Z           "evidence": [
2026-06-22T02:04:44.3809208Z             {
2026-06-22T02:04:44.3809435Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3809525Z               "line": 1078
2026-06-22T02:04:44.3809611Z             },
2026-06-22T02:04:44.3809690Z             {
2026-06-22T02:04:44.3809794Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3809990Z               "line": 1092
2026-06-22T02:04:44.3810071Z             }
2026-06-22T02:04:44.3810157Z           ]
2026-06-22T02:04:44.3810248Z         }
2026-06-22T02:04:44.3810329Z       }
2026-06-22T02:04:44.3810410Z     },
2026-06-22T02:04:44.3810482Z     {
2026-06-22T02:04:44.3810591Z       "id": "REQ-PICKER-UX-V013",
2026-06-22T02:04:44.3812172Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-22T02:04:44.3812266Z       "requiredStages": [],
2026-06-22T02:04:44.3812356Z       "stages": {
2026-06-22T02:04:44.3812443Z         "doc": {
2026-06-22T02:04:44.3812538Z           "complete": false,
2026-06-22T02:04:44.3812624Z           "evidence": []
2026-06-22T02:04:44.3812709Z         },
2026-06-22T02:04:44.3812791Z         "impl": {
2026-06-22T02:04:44.3812872Z           "complete": false,
2026-06-22T02:04:44.3812957Z           "evidence": []
2026-06-22T02:04:44.3813034Z         },
2026-06-22T02:04:44.3813120Z         "int": {
2026-06-22T02:04:44.3813210Z           "complete": false,
2026-06-22T02:04:44.3813295Z           "evidence": []
2026-06-22T02:04:44.3813383Z         },
2026-06-22T02:04:44.3813468Z         "unit": {
2026-06-22T02:04:44.3813558Z           "complete": false,
2026-06-22T02:04:44.3813654Z           "evidence": []
2026-06-22T02:04:44.3813735Z         }
2026-06-22T02:04:44.3813821Z       }
2026-06-22T02:04:44.3813906Z     },
2026-06-22T02:04:44.3813983Z     {
2026-06-22T02:04:44.3814069Z       "id": "REQ-PRES-1",
2026-06-22T02:04:44.3815389Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-22T02:04:44.3815488Z       "requiredStages": [
2026-06-22T02:04:44.3815574Z         "impl",
2026-06-22T02:04:44.3815661Z         "unit",
2026-06-22T02:04:44.3815747Z         "int"
2026-06-22T02:04:44.3815831Z       ],
2026-06-22T02:04:44.3815913Z       "stages": {
2026-06-22T02:04:44.3816004Z         "doc": {
2026-06-22T02:04:44.3816099Z           "complete": true,
2026-06-22T02:04:44.3816184Z           "evidence": [
2026-06-22T02:04:44.3816271Z             {
2026-06-22T02:04:44.3816366Z               "path": "docs/DEFERRED.md",
2026-06-22T02:04:44.3816452Z               "line": 11
2026-06-22T02:04:44.3816538Z             }
2026-06-22T02:04:44.3816615Z           ]
2026-06-22T02:04:44.3816690Z         },
2026-06-22T02:04:44.3816771Z         "impl": {
2026-06-22T02:04:44.3816862Z           "complete": true,
2026-06-22T02:04:44.3816948Z           "evidence": [
2026-06-22T02:04:44.3817033Z             {
2026-06-22T02:04:44.3817156Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3817237Z               "line": 515
2026-06-22T02:04:44.3817322Z             },
2026-06-22T02:04:44.3817406Z             {
2026-06-22T02:04:44.3817531Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.3817617Z               "line": 567
2026-06-22T02:04:44.3817773Z             },
2026-06-22T02:04:44.3817855Z             {
2026-06-22T02:04:44.3817975Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3818064Z               "line": 188
2026-06-22T02:04:44.3818146Z             },
2026-06-22T02:04:44.3818228Z             {
2026-06-22T02:04:44.3818412Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3818494Z               "line": 214
2026-06-22T02:04:44.3818575Z             },
2026-06-22T02:04:44.3818666Z             {
2026-06-22T02:04:44.3818785Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3818871Z               "line": 28
2026-06-22T02:04:44.3819018Z             },
2026-06-22T02:04:44.3819100Z             {
2026-06-22T02:04:44.3819214Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3819305Z               "line": 105
2026-06-22T02:04:44.3819381Z             },
2026-06-22T02:04:44.3819463Z             {
2026-06-22T02:04:44.3819580Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3819662Z               "line": 161
2026-06-22T02:04:44.3819744Z             },
2026-06-22T02:04:44.3819830Z             {
2026-06-22T02:04:44.3819942Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3820027Z               "line": 180
2026-06-22T02:04:44.3820109Z             },
2026-06-22T02:04:44.3820185Z             {
2026-06-22T02:04:44.3820316Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3820403Z               "line": 421
2026-06-22T02:04:44.3820479Z             },
2026-06-22T02:04:44.3820565Z             {
2026-06-22T02:04:44.3820678Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.3820761Z               "line": 289
2026-06-22T02:04:44.3820842Z             },
2026-06-22T02:04:44.3820922Z             {
2026-06-22T02:04:44.3821037Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.3821128Z               "line": 336
2026-06-22T02:04:44.3821209Z             },
2026-06-22T02:04:44.3821289Z             {
2026-06-22T02:04:44.3821405Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.3821494Z               "line": 362
2026-06-22T02:04:44.3821580Z             },
2026-06-22T02:04:44.3821662Z             {
2026-06-22T02:04:44.3821785Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3821876Z               "line": 100
2026-06-22T02:04:44.3821952Z             }
2026-06-22T02:04:44.3822039Z           ]
2026-06-22T02:04:44.3822123Z         },
2026-06-22T02:04:44.3822210Z         "int": {
2026-06-22T02:04:44.3822297Z           "complete": true,
2026-06-22T02:04:44.3822378Z           "evidence": [
2026-06-22T02:04:44.3822462Z             {
2026-06-22T02:04:44.3822585Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3822676Z               "line": 563
2026-06-22T02:04:44.3822756Z             },
2026-06-22T02:04:44.3822845Z             {
2026-06-22T02:04:44.3822969Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3823056Z               "line": 747
2026-06-22T02:04:44.3823136Z             },
2026-06-22T02:04:44.3823221Z             {
2026-06-22T02:04:44.3823337Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3823413Z               "line": 1165
2026-06-22T02:04:44.3823493Z             }
2026-06-22T02:04:44.3823575Z           ]
2026-06-22T02:04:44.3823661Z         },
2026-06-22T02:04:44.3823751Z         "unit": {
2026-06-22T02:04:44.3823842Z           "complete": true,
2026-06-22T02:04:44.3823924Z           "evidence": [
2026-06-22T02:04:44.3824004Z             {
2026-06-22T02:04:44.3824118Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.3824204Z               "line": 674
2026-06-22T02:04:44.3824291Z             },
2026-06-22T02:04:44.3824376Z             {
2026-06-22T02:04:44.3824490Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3824662Z               "line": 238
2026-06-22T02:04:44.3824748Z             },
2026-06-22T02:04:44.3824834Z             {
2026-06-22T02:04:44.3824939Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3825029Z               "line": 269
2026-06-22T02:04:44.3825110Z             },
2026-06-22T02:04:44.3825310Z             {
2026-06-22T02:04:44.3825428Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3825509Z               "line": 305
2026-06-22T02:04:44.3825587Z             },
2026-06-22T02:04:44.3825672Z             {
2026-06-22T02:04:44.3825776Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:04:44.3825868Z               "line": 336
2026-06-22T02:04:44.3825944Z             },
2026-06-22T02:04:44.3826029Z             {
2026-06-22T02:04:44.3826154Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.3826240Z               "line": 1217
2026-06-22T02:04:44.3826316Z             },
2026-06-22T02:04:44.3826401Z             {
2026-06-22T02:04:44.3826512Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.3826602Z               "line": 1163
2026-06-22T02:04:44.3826687Z             }
2026-06-22T02:04:44.3826769Z           ]
2026-06-22T02:04:44.3826850Z         }
2026-06-22T02:04:44.3826940Z       }
2026-06-22T02:04:44.3827021Z     },
2026-06-22T02:04:44.3827108Z     {
2026-06-22T02:04:44.3827198Z       "id": "REQ-RC-1",
2026-06-22T02:04:44.3829263Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-22T02:04:44.3829370Z       "requiredStages": [
2026-06-22T02:04:44.3829450Z         "impl",
2026-06-22T02:04:44.3829536Z         "unit",
2026-06-22T02:04:44.3829616Z         "int"
2026-06-22T02:04:44.3829699Z       ],
2026-06-22T02:04:44.3829788Z       "stages": {
2026-06-22T02:04:44.3829870Z         "doc": {
2026-06-22T02:04:44.3829965Z           "complete": false,
2026-06-22T02:04:44.3830047Z           "evidence": []
2026-06-22T02:04:44.3830127Z         },
2026-06-22T02:04:44.3830203Z         "impl": {
2026-06-22T02:04:44.3830304Z           "complete": true,
2026-06-22T02:04:44.3830390Z           "evidence": [
2026-06-22T02:04:44.3830470Z             {
2026-06-22T02:04:44.3830588Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.3830674Z               "line": 1038
2026-06-22T02:04:44.3830759Z             },
2026-06-22T02:04:44.3830843Z             {
2026-06-22T02:04:44.3830968Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3831058Z               "line": 1978
2026-06-22T02:04:44.3831134Z             },
2026-06-22T02:04:44.3831210Z             {
2026-06-22T02:04:44.3831331Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.3831421Z               "line": 967
2026-06-22T02:04:44.3831501Z             },
2026-06-22T02:04:44.3831593Z             {
2026-06-22T02:04:44.3831707Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.3831788Z               "line": 1001
2026-06-22T02:04:44.3831869Z             },
2026-06-22T02:04:44.3831950Z             {
2026-06-22T02:04:44.3832059Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3832145Z               "line": 22
2026-06-22T02:04:44.3832232Z             },
2026-06-22T02:04:44.3832318Z             {
2026-06-22T02:04:44.3832427Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3832614Z               "line": 701
2026-06-22T02:04:44.3832698Z             }
2026-06-22T02:04:44.3832784Z           ]
2026-06-22T02:04:44.3832862Z         },
2026-06-22T02:04:44.3832947Z         "int": {
2026-06-22T02:04:44.3833031Z           "complete": true,
2026-06-22T02:04:44.3833122Z           "evidence": [
2026-06-22T02:04:44.3833302Z             {
2026-06-22T02:04:44.3833405Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3833496Z               "line": 261
2026-06-22T02:04:44.3833578Z             },
2026-06-22T02:04:44.3833663Z             {
2026-06-22T02:04:44.3833777Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3833854Z               "line": 288
2026-06-22T02:04:44.3833944Z             },
2026-06-22T02:04:44.3834015Z             {
2026-06-22T02:04:44.3834130Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3834222Z               "line": 416
2026-06-22T02:04:44.3834298Z             }
2026-06-22T02:04:44.3834382Z           ]
2026-06-22T02:04:44.3834465Z         },
2026-06-22T02:04:44.3834550Z         "unit": {
2026-06-22T02:04:44.3834636Z           "complete": true,
2026-06-22T02:04:44.3834721Z           "evidence": [
2026-06-22T02:04:44.3834794Z             {
2026-06-22T02:04:44.3834903Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.3834998Z               "line": 1327
2026-06-22T02:04:44.3835074Z             },
2026-06-22T02:04:44.3835161Z             {
2026-06-22T02:04:44.3835264Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3835361Z               "line": 1133
2026-06-22T02:04:44.3835447Z             },
2026-06-22T02:04:44.3835528Z             {
2026-06-22T02:04:44.3835632Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3835719Z               "line": 1162
2026-06-22T02:04:44.3835801Z             },
2026-06-22T02:04:44.3835884Z             {
2026-06-22T02:04:44.3835984Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3836084Z               "line": 1175
2026-06-22T02:04:44.3836166Z             }
2026-06-22T02:04:44.3836256Z           ]
2026-06-22T02:04:44.3836336Z         }
2026-06-22T02:04:44.3836423Z       }
2026-06-22T02:04:44.3836504Z     },
2026-06-22T02:04:44.3836594Z     {
2026-06-22T02:04:44.3836690Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-22T02:04:44.3842452Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-22T02:04:44.3842763Z       "requiredStages": [
2026-06-22T02:04:44.3842845Z         "doc",
2026-06-22T02:04:44.3842929Z         "impl",
2026-06-22T02:04:44.3843010Z         "unit"
2026-06-22T02:04:44.3843092Z       ],
2026-06-22T02:04:44.3843178Z       "stages": {
2026-06-22T02:04:44.3843267Z         "doc": {
2026-06-22T02:04:44.3843354Z           "complete": true,
2026-06-22T02:04:44.3843450Z           "evidence": [
2026-06-22T02:04:44.3843536Z             {
2026-06-22T02:04:44.3843639Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3843729Z               "line": 345
2026-06-22T02:04:44.3843810Z             },
2026-06-22T02:04:44.3843895Z             {
2026-06-22T02:04:44.3844003Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3844094Z               "line": 440
2026-06-22T02:04:44.3844176Z             }
2026-06-22T02:04:44.3844266Z           ]
2026-06-22T02:04:44.3844342Z         },
2026-06-22T02:04:44.3844434Z         "impl": {
2026-06-22T02:04:44.3844519Z           "complete": true,
2026-06-22T02:04:44.3844618Z           "evidence": [
2026-06-22T02:04:44.3844700Z             {
2026-06-22T02:04:44.3844791Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3844882Z               "line": 226
2026-06-22T02:04:44.3844957Z             },
2026-06-22T02:04:44.3845044Z             {
2026-06-22T02:04:44.3845139Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3845234Z               "line": 285
2026-06-22T02:04:44.3845319Z             },
2026-06-22T02:04:44.3845402Z             {
2026-06-22T02:04:44.3845506Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3845591Z               "line": 300
2026-06-22T02:04:44.3845674Z             },
2026-06-22T02:04:44.3845755Z             {
2026-06-22T02:04:44.3845854Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3845945Z               "line": 315
2026-06-22T02:04:44.3846027Z             },
2026-06-22T02:04:44.3846116Z             {
2026-06-22T02:04:44.3846211Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3846308Z               "line": 364
2026-06-22T02:04:44.3846385Z             }
2026-06-22T02:04:44.3846468Z           ]
2026-06-22T02:04:44.3846558Z         },
2026-06-22T02:04:44.3846644Z         "int": {
2026-06-22T02:04:44.3846731Z           "complete": false,
2026-06-22T02:04:44.3846816Z           "evidence": []
2026-06-22T02:04:44.3846901Z         },
2026-06-22T02:04:44.3846983Z         "unit": {
2026-06-22T02:04:44.3847079Z           "complete": true,
2026-06-22T02:04:44.3847154Z           "evidence": [
2026-06-22T02:04:44.3847240Z             {
2026-06-22T02:04:44.3847346Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3847427Z               "line": 1190
2026-06-22T02:04:44.3847517Z             },
2026-06-22T02:04:44.3847598Z             {
2026-06-22T02:04:44.3847698Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3847788Z               "line": 1305
2026-06-22T02:04:44.3847864Z             }
2026-06-22T02:04:44.3847952Z           ]
2026-06-22T02:04:44.3848032Z         }
2026-06-22T02:04:44.3848113Z       }
2026-06-22T02:04:44.3848199Z     },
2026-06-22T02:04:44.3848286Z     {
2026-06-22T02:04:44.3848389Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-22T02:04:44.3852733Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-22T02:04:44.3853037Z       "requiredStages": [
2026-06-22T02:04:44.3853128Z         "doc",
2026-06-22T02:04:44.3853213Z         "impl",
2026-06-22T02:04:44.3853299Z         "unit"
2026-06-22T02:04:44.3853381Z       ],
2026-06-22T02:04:44.3853466Z       "stages": {
2026-06-22T02:04:44.3853552Z         "doc": {
2026-06-22T02:04:44.3853643Z           "complete": true,
2026-06-22T02:04:44.3853729Z           "evidence": [
2026-06-22T02:04:44.3853818Z             {
2026-06-22T02:04:44.3853928Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3854011Z               "line": 461
2026-06-22T02:04:44.3854096Z             }
2026-06-22T02:04:44.3854180Z           ]
2026-06-22T02:04:44.3854261Z         },
2026-06-22T02:04:44.3854347Z         "impl": {
2026-06-22T02:04:44.3854441Z           "complete": true,
2026-06-22T02:04:44.3854525Z           "evidence": [
2026-06-22T02:04:44.3854611Z             {
2026-06-22T02:04:44.3854713Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3854803Z               "line": 421
2026-06-22T02:04:44.3854883Z             },
2026-06-22T02:04:44.3854970Z             {
2026-06-22T02:04:44.3855069Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3855160Z               "line": 437
2026-06-22T02:04:44.3855245Z             }
2026-06-22T02:04:44.3855328Z           ]
2026-06-22T02:04:44.3855408Z         },
2026-06-22T02:04:44.3855488Z         "int": {
2026-06-22T02:04:44.3855590Z           "complete": false,
2026-06-22T02:04:44.3855680Z           "evidence": []
2026-06-22T02:04:44.3855766Z         },
2026-06-22T02:04:44.3855851Z         "unit": {
2026-06-22T02:04:44.3855938Z           "complete": true,
2026-06-22T02:04:44.3856028Z           "evidence": [
2026-06-22T02:04:44.3856109Z             {
2026-06-22T02:04:44.3856219Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3856310Z               "line": 1440
2026-06-22T02:04:44.3856394Z             },
2026-06-22T02:04:44.3856481Z             {
2026-06-22T02:04:44.3856577Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3856672Z               "line": 1459
2026-06-22T02:04:44.3856753Z             },
2026-06-22T02:04:44.3856844Z             {
2026-06-22T02:04:44.3856949Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3857042Z               "line": 1471
2026-06-22T02:04:44.3857133Z             },
2026-06-22T02:04:44.3857214Z             {
2026-06-22T02:04:44.3857320Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3857409Z               "line": 1499
2026-06-22T02:04:44.3857500Z             }
2026-06-22T02:04:44.3857582Z           ]
2026-06-22T02:04:44.3857668Z         }
2026-06-22T02:04:44.3857762Z       }
2026-06-22T02:04:44.3857839Z     },
2026-06-22T02:04:44.3857925Z     {
2026-06-22T02:04:44.3858024Z       "id": "REQ-RC-WIN-PASTE",
2026-06-22T02:04:44.3862735Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-22T02:04:44.3863058Z       "requiredStages": [
2026-06-22T02:04:44.3863148Z         "doc",
2026-06-22T02:04:44.3863239Z         "impl",
2026-06-22T02:04:44.3863316Z         "unit"
2026-06-22T02:04:44.3863397Z       ],
2026-06-22T02:04:44.3863482Z       "stages": {
2026-06-22T02:04:44.3863564Z         "doc": {
2026-06-22T02:04:44.3863659Z           "complete": true,
2026-06-22T02:04:44.3863745Z           "evidence": [
2026-06-22T02:04:44.3863830Z             {
2026-06-22T02:04:44.3863937Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:04:44.3864031Z               "line": 447
2026-06-22T02:04:44.3864121Z             }
2026-06-22T02:04:44.3864198Z           ]
2026-06-22T02:04:44.3864284Z         },
2026-06-22T02:04:44.3864369Z         "impl": {
2026-06-22T02:04:44.3864465Z           "complete": true,
2026-06-22T02:04:44.3864552Z           "evidence": [
2026-06-22T02:04:44.3864637Z             {
2026-06-22T02:04:44.3864745Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3864830Z               "line": 395
2026-06-22T02:04:44.3864916Z             },
2026-06-22T02:04:44.3864996Z             {
2026-06-22T02:04:44.3865104Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3865191Z               "line": 411
2026-06-22T02:04:44.3865278Z             },
2026-06-22T02:04:44.3865367Z             {
2026-06-22T02:04:44.3865467Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3865563Z               "line": 454
2026-06-22T02:04:44.3865639Z             },
2026-06-22T02:04:44.3865729Z             {
2026-06-22T02:04:44.3865830Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3865926Z               "line": 468
2026-06-22T02:04:44.3866016Z             },
2026-06-22T02:04:44.3866096Z             {
2026-06-22T02:04:44.3866202Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3866292Z               "line": 479
2026-06-22T02:04:44.3866382Z             }
2026-06-22T02:04:44.3866464Z           ]
2026-06-22T02:04:44.3866536Z         },
2026-06-22T02:04:44.3866612Z         "int": {
2026-06-22T02:04:44.3866697Z           "complete": false,
2026-06-22T02:04:44.3866774Z           "evidence": []
2026-06-22T02:04:44.3866861Z         },
2026-06-22T02:04:44.3866945Z         "unit": {
2026-06-22T02:04:44.3867026Z           "complete": true,
2026-06-22T02:04:44.3867123Z           "evidence": [
2026-06-22T02:04:44.3867204Z             {
2026-06-22T02:04:44.3867303Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3867390Z               "line": 1381
2026-06-22T02:04:44.3867471Z             },
2026-06-22T02:04:44.3867631Z             {
2026-06-22T02:04:44.3867731Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3867818Z               "line": 1402
2026-06-22T02:04:44.3867899Z             },
2026-06-22T02:04:44.3867983Z             {
2026-06-22T02:04:44.3868094Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3868247Z               "line": 1423
2026-06-22T02:04:44.3868327Z             }
2026-06-22T02:04:44.3868419Z           ]
2026-06-22T02:04:44.3868499Z         }
2026-06-22T02:04:44.3868585Z       }
2026-06-22T02:04:44.3868666Z     },
2026-06-22T02:04:44.3868752Z     {
2026-06-22T02:04:44.3868842Z       "id": "REQ-RCVIEW-1",
2026-06-22T02:04:44.3873299Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-22T02:04:44.3873418Z       "requiredStages": [
2026-06-22T02:04:44.3873504Z         "doc",
2026-06-22T02:04:44.3873600Z         "impl",
2026-06-22T02:04:44.3873685Z         "unit",
2026-06-22T02:04:44.3873770Z         "int"
2026-06-22T02:04:44.3873858Z       ],
2026-06-22T02:04:44.3873947Z       "stages": {
2026-06-22T02:04:44.3874023Z         "doc": {
2026-06-22T02:04:44.3874109Z           "complete": true,
2026-06-22T02:04:44.3874201Z           "evidence": [
2026-06-22T02:04:44.3874281Z             {
2026-06-22T02:04:44.3874386Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3874467Z               "line": 342
2026-06-22T02:04:44.3874553Z             }
2026-06-22T02:04:44.3874643Z           ]
2026-06-22T02:04:44.3874724Z         },
2026-06-22T02:04:44.3874816Z         "impl": {
2026-06-22T02:04:44.3874901Z           "complete": true,
2026-06-22T02:04:44.3874986Z           "evidence": [
2026-06-22T02:04:44.3875073Z             {
2026-06-22T02:04:44.3875197Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.3875291Z               "line": 528
2026-06-22T02:04:44.3875376Z             },
2026-06-22T02:04:44.3875453Z             {
2026-06-22T02:04:44.3875566Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3875651Z               "line": 628
2026-06-22T02:04:44.3875727Z             },
2026-06-22T02:04:44.3875808Z             {
2026-06-22T02:04:44.3875923Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3876003Z               "line": 639
2026-06-22T02:04:44.3876085Z             },
2026-06-22T02:04:44.3876157Z             {
2026-06-22T02:04:44.3876280Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3876366Z               "line": 41
2026-06-22T02:04:44.3876448Z             },
2026-06-22T02:04:44.3876651Z             {
2026-06-22T02:04:44.3876762Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3876848Z               "line": 62
2026-06-22T02:04:44.3876933Z             },
2026-06-22T02:04:44.3877019Z             {
2026-06-22T02:04:44.3877134Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3877320Z               "line": 309
2026-06-22T02:04:44.3877406Z             },
2026-06-22T02:04:44.3877491Z             {
2026-06-22T02:04:44.3877596Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:04:44.3877688Z               "line": 701
2026-06-22T02:04:44.3877773Z             }
2026-06-22T02:04:44.3877858Z           ]
2026-06-22T02:04:44.3877945Z         },
2026-06-22T02:04:44.3878031Z         "int": {
2026-06-22T02:04:44.3878125Z           "complete": true,
2026-06-22T02:04:44.3878215Z           "evidence": [
2026-06-22T02:04:44.3878301Z             {
2026-06-22T02:04:44.3878421Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3878511Z               "line": 916
2026-06-22T02:04:44.3878606Z             },
2026-06-22T02:04:44.3878688Z             {
2026-06-22T02:04:44.3878807Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3878901Z               "line": 956
2026-06-22T02:04:44.3879031Z             },
2026-06-22T02:04:44.3879122Z             {
2026-06-22T02:04:44.3879245Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3879341Z               "line": 1003
2026-06-22T02:04:44.3879431Z             },
2026-06-22T02:04:44.3879511Z             {
2026-06-22T02:04:44.3879627Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3879717Z               "line": 1155
2026-06-22T02:04:44.3879808Z             }
2026-06-22T02:04:44.3879894Z           ]
2026-06-22T02:04:44.3879980Z         },
2026-06-22T02:04:44.3880065Z         "unit": {
2026-06-22T02:04:44.3880155Z           "complete": true,
2026-06-22T02:04:44.3880248Z           "evidence": [
2026-06-22T02:04:44.3880338Z             {
2026-06-22T02:04:44.3880455Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3880546Z               "line": 175
2026-06-22T02:04:44.3880636Z             },
2026-06-22T02:04:44.3880725Z             {
2026-06-22T02:04:44.3880838Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:04:44.3880925Z               "line": 195
2026-06-22T02:04:44.3881007Z             }
2026-06-22T02:04:44.3883893Z           ]
2026-06-22T02:04:44.3883997Z         }
2026-06-22T02:04:44.3884078Z       }
2026-06-22T02:04:44.3884160Z     },
2026-06-22T02:04:44.3884245Z     {
2026-06-22T02:04:44.3884335Z       "id": "REQ-REACH-1",
2026-06-22T02:04:44.3884488Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-22T02:04:44.3884592Z       "requiredStages": [
2026-06-22T02:04:44.3884684Z         "impl",
2026-06-22T02:04:44.3884766Z         "unit",
2026-06-22T02:04:44.3884850Z         "int"
2026-06-22T02:04:44.3884931Z       ],
2026-06-22T02:04:44.3885023Z       "stages": {
2026-06-22T02:04:44.3885109Z         "doc": {
2026-06-22T02:04:44.3885208Z           "complete": false,
2026-06-22T02:04:44.3885289Z           "evidence": []
2026-06-22T02:04:44.3885376Z         },
2026-06-22T02:04:44.3885466Z         "impl": {
2026-06-22T02:04:44.3885551Z           "complete": true,
2026-06-22T02:04:44.3885633Z           "evidence": [
2026-06-22T02:04:44.3885725Z             {
2026-06-22T02:04:44.3885851Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.3885936Z               "line": 628
2026-06-22T02:04:44.3886023Z             },
2026-06-22T02:04:44.3886102Z             {
2026-06-22T02:04:44.3886216Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3886301Z               "line": 76
2026-06-22T02:04:44.3886383Z             },
2026-06-22T02:04:44.3886459Z             {
2026-06-22T02:04:44.3886572Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3886650Z               "line": 222
2026-06-22T02:04:44.3886873Z             },
2026-06-22T02:04:44.3886955Z             {
2026-06-22T02:04:44.3887065Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3887150Z               "line": 422
2026-06-22T02:04:44.3887231Z             },
2026-06-22T02:04:44.3887313Z             {
2026-06-22T02:04:44.3887522Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3887609Z               "line": 529
2026-06-22T02:04:44.3887694Z             },
2026-06-22T02:04:44.3887770Z             {
2026-06-22T02:04:44.3887885Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:04:44.3887976Z               "line": 39
2026-06-22T02:04:44.3888065Z             },
2026-06-22T02:04:44.3888147Z             {
2026-06-22T02:04:44.3888263Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3888342Z               "line": 301
2026-06-22T02:04:44.3888433Z             },
2026-06-22T02:04:44.3888515Z             {
2026-06-22T02:04:44.3888620Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:04:44.3888709Z               "line": 88
2026-06-22T02:04:44.3888789Z             },
2026-06-22T02:04:44.3888875Z             {
2026-06-22T02:04:44.3889042Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:04:44.3889127Z               "line": 98
2026-06-22T02:04:44.3889214Z             },
2026-06-22T02:04:44.3889291Z             {
2026-06-22T02:04:44.3889452Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3889544Z               "line": 233
2026-06-22T02:04:44.3889629Z             }
2026-06-22T02:04:44.3889714Z           ]
2026-06-22T02:04:44.3889801Z         },
2026-06-22T02:04:44.3889882Z         "int": {
2026-06-22T02:04:44.3889977Z           "complete": true,
2026-06-22T02:04:44.3890067Z           "evidence": [
2026-06-22T02:04:44.3890144Z             {
2026-06-22T02:04:44.3890268Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3890349Z               "line": 415
2026-06-22T02:04:44.3890440Z             },
2026-06-22T02:04:44.3890521Z             {
2026-06-22T02:04:44.3890648Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.3890740Z               "line": 520
2026-06-22T02:04:44.3890822Z             },
2026-06-22T02:04:44.3890911Z             {
2026-06-22T02:04:44.3891020Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3891106Z               "line": 998
2026-06-22T02:04:44.3891187Z             },
2026-06-22T02:04:44.3891271Z             {
2026-06-22T02:04:44.3891394Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.3891480Z               "line": 1383
2026-06-22T02:04:44.3891567Z             }
2026-06-22T02:04:44.3891651Z           ]
2026-06-22T02:04:44.3891728Z         },
2026-06-22T02:04:44.3891810Z         "unit": {
2026-06-22T02:04:44.3891910Z           "complete": true,
2026-06-22T02:04:44.3891990Z           "evidence": [
2026-06-22T02:04:44.3892072Z             {
2026-06-22T02:04:44.3892191Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3892272Z               "line": 639
2026-06-22T02:04:44.3892357Z             },
2026-06-22T02:04:44.3892439Z             {
2026-06-22T02:04:44.3892554Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:04:44.3892643Z               "line": 660
2026-06-22T02:04:44.3892726Z             },
2026-06-22T02:04:44.3892816Z             {
2026-06-22T02:04:44.3892925Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:04:44.3893011Z               "line": 771
2026-06-22T02:04:44.3893098Z             },
2026-06-22T02:04:44.3893182Z             {
2026-06-22T02:04:44.3893302Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:04:44.3893384Z               "line": 93
2026-06-22T02:04:44.3893469Z             },
2026-06-22T02:04:44.3893550Z             {
2026-06-22T02:04:44.3893670Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:04:44.3893906Z               "line": 224
2026-06-22T02:04:44.3893987Z             },
2026-06-22T02:04:44.3894068Z             {
2026-06-22T02:04:44.3894175Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:04:44.3894261Z               "line": 96
2026-06-22T02:04:44.3894343Z             },
2026-06-22T02:04:44.3894518Z             {
2026-06-22T02:04:44.3894634Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:04:44.3894720Z               "line": 146
2026-06-22T02:04:44.3894810Z             },
2026-06-22T02:04:44.3894895Z             {
2026-06-22T02:04:44.3895006Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.3895092Z               "line": 698
2026-06-22T02:04:44.3895176Z             },
2026-06-22T02:04:44.3895263Z             {
2026-06-22T02:04:44.3895368Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:04:44.3895454Z               "line": 118
2026-06-22T02:04:44.3895539Z             },
2026-06-22T02:04:44.3895626Z             {
2026-06-22T02:04:44.3895739Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:04:44.3895830Z               "line": 148
2026-06-22T02:04:44.3895922Z             },
2026-06-22T02:04:44.3896003Z             {
2026-06-22T02:04:44.3896116Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3896213Z               "line": 928
2026-06-22T02:04:44.3896290Z             }
2026-06-22T02:04:44.3896373Z           ]
2026-06-22T02:04:44.3896459Z         }
2026-06-22T02:04:44.3896540Z       }
2026-06-22T02:04:44.3896611Z     },
2026-06-22T02:04:44.3896695Z     {
2026-06-22T02:04:44.3896780Z       "id": "REQ-REACH-2",
2026-06-22T02:04:44.3896943Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-22T02:04:44.3897038Z       "requiredStages": [],
2026-06-22T02:04:44.3897128Z       "stages": {
2026-06-22T02:04:44.3897225Z         "doc": {
2026-06-22T02:04:44.3897315Z           "complete": false,
2026-06-22T02:04:44.3897395Z           "evidence": []
2026-06-22T02:04:44.3897481Z         },
2026-06-22T02:04:44.3897564Z         "impl": {
2026-06-22T02:04:44.3897654Z           "complete": false,
2026-06-22T02:04:44.3897739Z           "evidence": []
2026-06-22T02:04:44.3897825Z         },
2026-06-22T02:04:44.3897906Z         "int": {
2026-06-22T02:04:44.3898006Z           "complete": false,
2026-06-22T02:04:44.3898101Z           "evidence": []
2026-06-22T02:04:44.3898189Z         },
2026-06-22T02:04:44.3898268Z         "unit": {
2026-06-22T02:04:44.3898368Z           "complete": false,
2026-06-22T02:04:44.3898455Z           "evidence": []
2026-06-22T02:04:44.3898536Z         }
2026-06-22T02:04:44.3898616Z       }
2026-06-22T02:04:44.3898697Z     },
2026-06-22T02:04:44.3898784Z     {
2026-06-22T02:04:44.3898884Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-22T02:04:44.3902432Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-22T02:04:44.3902536Z       "requiredStages": [
2026-06-22T02:04:44.3902732Z         "doc",
2026-06-22T02:04:44.3902817Z         "impl",
2026-06-22T02:04:44.3902898Z         "unit",
2026-06-22T02:04:44.3902980Z         "int"
2026-06-22T02:04:44.3903066Z       ],
2026-06-22T02:04:44.3903161Z       "stages": {
2026-06-22T02:04:44.3903233Z         "doc": {
2026-06-22T02:04:44.3903423Z           "complete": true,
2026-06-22T02:04:44.3903513Z           "evidence": [
2026-06-22T02:04:44.3903601Z             {
2026-06-22T02:04:44.3903700Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3903781Z               "line": 372
2026-06-22T02:04:44.3903867Z             }
2026-06-22T02:04:44.3903949Z           ]
2026-06-22T02:04:44.3904034Z         },
2026-06-22T02:04:44.3904120Z         "impl": {
2026-06-22T02:04:44.3904216Z           "complete": true,
2026-06-22T02:04:44.3904302Z           "evidence": [
2026-06-22T02:04:44.3904386Z             {
2026-06-22T02:04:44.3904509Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3904590Z               "line": 110
2026-06-22T02:04:44.3904675Z             }
2026-06-22T02:04:44.3904759Z           ]
2026-06-22T02:04:44.3904840Z         },
2026-06-22T02:04:44.3904927Z         "int": {
2026-06-22T02:04:44.3905023Z           "complete": true,
2026-06-22T02:04:44.3905112Z           "evidence": [
2026-06-22T02:04:44.3905194Z             {
2026-06-22T02:04:44.3905342Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-22T02:04:44.3905431Z               "line": 26
2026-06-22T02:04:44.3905514Z             }
2026-06-22T02:04:44.3905600Z           ]
2026-06-22T02:04:44.3905681Z         },
2026-06-22T02:04:44.3905760Z         "unit": {
2026-06-22T02:04:44.3905848Z           "complete": true,
2026-06-22T02:04:44.3905933Z           "evidence": [
2026-06-22T02:04:44.3906019Z             {
2026-06-22T02:04:44.3906123Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:04:44.3906210Z               "line": 320
2026-06-22T02:04:44.3906285Z             }
2026-06-22T02:04:44.3906371Z           ]
2026-06-22T02:04:44.3906458Z         }
2026-06-22T02:04:44.3906544Z       }
2026-06-22T02:04:44.3906619Z     },
2026-06-22T02:04:44.3906695Z     {
2026-06-22T02:04:44.3906783Z       "id": "REQ-REL-1",
2026-06-22T02:04:44.3907147Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-22T02:04:44.3907246Z       "requiredStages": [
2026-06-22T02:04:44.3907326Z         "doc",
2026-06-22T02:04:44.3907417Z         "impl"
2026-06-22T02:04:44.3907508Z       ],
2026-06-22T02:04:44.3907594Z       "stages": {
2026-06-22T02:04:44.3907674Z         "doc": {
2026-06-22T02:04:44.3907765Z           "complete": true,
2026-06-22T02:04:44.3907847Z           "evidence": [
2026-06-22T02:04:44.3907932Z             {
2026-06-22T02:04:44.3908152Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-22T02:04:44.3908242Z               "line": 3
2026-06-22T02:04:44.3908332Z             }
2026-06-22T02:04:44.3908414Z           ]
2026-06-22T02:04:44.3908490Z         },
2026-06-22T02:04:44.3908571Z         "impl": {
2026-06-22T02:04:44.3908652Z           "complete": true,
2026-06-22T02:04:44.3908749Z           "evidence": [
2026-06-22T02:04:44.3908833Z             {
2026-06-22T02:04:44.3909025Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T02:04:44.3909106Z               "line": 11
2026-06-22T02:04:44.3909190Z             },
2026-06-22T02:04:44.3909272Z             {
2026-06-22T02:04:44.3909373Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3909467Z               "line": 265
2026-06-22T02:04:44.3909553Z             }
2026-06-22T02:04:44.3909635Z           ]
2026-06-22T02:04:44.3909722Z         },
2026-06-22T02:04:44.3909801Z         "int": {
2026-06-22T02:04:44.3909900Z           "complete": false,
2026-06-22T02:04:44.3909991Z           "evidence": []
2026-06-22T02:04:44.3910077Z         },
2026-06-22T02:04:44.3910272Z         "unit": {
2026-06-22T02:04:44.3910363Z           "complete": false,
2026-06-22T02:04:44.3910445Z           "evidence": []
2026-06-22T02:04:44.3910525Z         }
2026-06-22T02:04:44.3910606Z       }
2026-06-22T02:04:44.3910692Z     },
2026-06-22T02:04:44.3910773Z     {
2026-06-22T02:04:44.3910863Z       "id": "REQ-REL-2",
2026-06-22T02:04:44.3911426Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-22T02:04:44.3911521Z       "requiredStages": [
2026-06-22T02:04:44.3911604Z         "impl",
2026-06-22T02:04:44.3911684Z         "int"
2026-06-22T02:04:44.3911769Z       ],
2026-06-22T02:04:44.3911855Z       "stages": {
2026-06-22T02:04:44.3911933Z         "doc": {
2026-06-22T02:04:44.3912018Z           "complete": true,
2026-06-22T02:04:44.3912107Z           "evidence": [
2026-06-22T02:04:44.3912178Z             {
2026-06-22T02:04:44.3912293Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-22T02:04:44.3912382Z               "line": 6
2026-06-22T02:04:44.3912471Z             }
2026-06-22T02:04:44.3912553Z           ]
2026-06-22T02:04:44.3912640Z         },
2026-06-22T02:04:44.3912725Z         "impl": {
2026-06-22T02:04:44.3912814Z           "complete": true,
2026-06-22T02:04:44.3912906Z           "evidence": [
2026-06-22T02:04:44.3912987Z             {
2026-06-22T02:04:44.3913101Z               "path": ".github/workflows/release.yml",
2026-06-22T02:04:44.3913192Z               "line": 16
2026-06-22T02:04:44.3913269Z             },
2026-06-22T02:04:44.3913354Z             {
2026-06-22T02:04:44.3913458Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3913546Z               "line": 352
2026-06-22T02:04:44.3913626Z             },
2026-06-22T02:04:44.3913707Z             {
2026-06-22T02:04:44.3913812Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3913903Z               "line": 426
2026-06-22T02:04:44.3913988Z             },
2026-06-22T02:04:44.3914074Z             {
2026-06-22T02:04:44.3914180Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3914265Z               "line": 588
2026-06-22T02:04:44.3914341Z             },
2026-06-22T02:04:44.3914427Z             {
2026-06-22T02:04:44.3914528Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3914608Z               "line": 720
2026-06-22T02:04:44.3914689Z             }
2026-06-22T02:04:44.3914776Z           ]
2026-06-22T02:04:44.3914857Z         },
2026-06-22T02:04:44.3914941Z         "int": {
2026-06-22T02:04:44.3915031Z           "complete": true,
2026-06-22T02:04:44.3915117Z           "evidence": [
2026-06-22T02:04:44.3915198Z             {
2026-06-22T02:04:44.3915320Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-22T02:04:44.3915410Z               "line": 13
2026-06-22T02:04:44.3915497Z             }
2026-06-22T02:04:44.3915587Z           ]
2026-06-22T02:04:44.3915672Z         },
2026-06-22T02:04:44.3915744Z         "unit": {
2026-06-22T02:04:44.3915836Z           "complete": false,
2026-06-22T02:04:44.3915921Z           "evidence": []
2026-06-22T02:04:44.3916006Z         }
2026-06-22T02:04:44.3916084Z       }
2026-06-22T02:04:44.3916164Z     },
2026-06-22T02:04:44.3916245Z     {
2026-06-22T02:04:44.3916330Z       "id": "REQ-REL-3",
2026-06-22T02:04:44.3916766Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-22T02:04:44.3916864Z       "requiredStages": [
2026-06-22T02:04:44.3916950Z         "impl",
2026-06-22T02:04:44.3917033Z         "unit"
2026-06-22T02:04:44.3917114Z       ],
2026-06-22T02:04:44.3917198Z       "stages": {
2026-06-22T02:04:44.3917279Z         "doc": {
2026-06-22T02:04:44.3917367Z           "complete": false,
2026-06-22T02:04:44.3917448Z           "evidence": []
2026-06-22T02:04:44.3917536Z         },
2026-06-22T02:04:44.3917622Z         "impl": {
2026-06-22T02:04:44.3917788Z           "complete": true,
2026-06-22T02:04:44.3917877Z           "evidence": [
2026-06-22T02:04:44.3917948Z             {
2026-06-22T02:04:44.3918073Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3918163Z               "line": 237
2026-06-22T02:04:44.3918335Z             },
2026-06-22T02:04:44.3918421Z             {
2026-06-22T02:04:44.3918544Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3918645Z               "line": 289
2026-06-22T02:04:44.3918726Z             },
2026-06-22T02:04:44.3918812Z             {
2026-06-22T02:04:44.3918916Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3919097Z               "line": 329
2026-06-22T02:04:44.3919188Z             },
2026-06-22T02:04:44.3919275Z             {
2026-06-22T02:04:44.3919384Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3919470Z               "line": 353
2026-06-22T02:04:44.3919541Z             },
2026-06-22T02:04:44.3919628Z             {
2026-06-22T02:04:44.3919731Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.3919812Z               "line": 394
2026-06-22T02:04:44.3919895Z             }
2026-06-22T02:04:44.3919981Z           ]
2026-06-22T02:04:44.3920065Z         },
2026-06-22T02:04:44.3920147Z         "int": {
2026-06-22T02:04:44.3920238Z           "complete": false,
2026-06-22T02:04:44.3920333Z           "evidence": []
2026-06-22T02:04:44.3920413Z         },
2026-06-22T02:04:44.3920498Z         "unit": {
2026-06-22T02:04:44.3920594Z           "complete": true,
2026-06-22T02:04:44.3920676Z           "evidence": [
2026-06-22T02:04:44.3920760Z             {
2026-06-22T02:04:44.3920875Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3920962Z               "line": 1045
2026-06-22T02:04:44.3921042Z             },
2026-06-22T02:04:44.3921128Z             {
2026-06-22T02:04:44.3921244Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.3921329Z               "line": 1104
2026-06-22T02:04:44.3921409Z             }
2026-06-22T02:04:44.3921495Z           ]
2026-06-22T02:04:44.3921582Z         }
2026-06-22T02:04:44.3921667Z       }
2026-06-22T02:04:44.3921752Z     },
2026-06-22T02:04:44.3921839Z     {
2026-06-22T02:04:44.3921934Z       "id": "REQ-RUN-PICKER",
2026-06-22T02:04:44.3926605Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-22T02:04:44.3926734Z       "requiredStages": [
2026-06-22T02:04:44.3926819Z         "doc",
2026-06-22T02:04:44.3927006Z         "impl",
2026-06-22T02:04:44.3927091Z         "unit"
2026-06-22T02:04:44.3927177Z       ],
2026-06-22T02:04:44.3927263Z       "stages": {
2026-06-22T02:04:44.3927344Z         "doc": {
2026-06-22T02:04:44.3927443Z           "complete": true,
2026-06-22T02:04:44.3927525Z           "evidence": [
2026-06-22T02:04:44.3927716Z             {
2026-06-22T02:04:44.3927816Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3927913Z               "line": 349
2026-06-22T02:04:44.3927993Z             }
2026-06-22T02:04:44.3928073Z           ]
2026-06-22T02:04:44.3928158Z         },
2026-06-22T02:04:44.3928244Z         "impl": {
2026-06-22T02:04:44.3928339Z           "complete": true,
2026-06-22T02:04:44.3928418Z           "evidence": [
2026-06-22T02:04:44.3928504Z             {
2026-06-22T02:04:44.3928614Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3928710Z               "line": 958
2026-06-22T02:04:44.3928789Z             },
2026-06-22T02:04:44.3928876Z             {
2026-06-22T02:04:44.3929057Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3929143Z               "line": 968
2026-06-22T02:04:44.3929229Z             },
2026-06-22T02:04:44.3929310Z             {
2026-06-22T02:04:44.3929433Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3929530Z               "line": 9
2026-06-22T02:04:44.3929611Z             },
2026-06-22T02:04:44.3929692Z             {
2026-06-22T02:04:44.3929801Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:04:44.3929893Z               "line": 67
2026-06-22T02:04:44.3929968Z             },
2026-06-22T02:04:44.3930053Z             {
2026-06-22T02:04:44.3930174Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T02:04:44.3930259Z               "line": 16
2026-06-22T02:04:44.3930340Z             },
2026-06-22T02:04:44.3930416Z             {
2026-06-22T02:04:44.3930517Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T02:04:44.3930602Z               "line": 254
2026-06-22T02:04:44.3930688Z             },
2026-06-22T02:04:44.3930775Z             {
2026-06-22T02:04:44.3930894Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3930987Z               "line": 11
2026-06-22T02:04:44.3931077Z             },
2026-06-22T02:04:44.3931159Z             {
2026-06-22T02:04:44.3931269Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3931359Z               "line": 115
2026-06-22T02:04:44.3931440Z             },
2026-06-22T02:04:44.3931526Z             {
2026-06-22T02:04:44.3931640Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3931721Z               "line": 554
2026-06-22T02:04:44.3931804Z             },
2026-06-22T02:04:44.3931889Z             {
2026-06-22T02:04:44.3931998Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3932089Z               "line": 635
2026-06-22T02:04:44.3932170Z             },
2026-06-22T02:04:44.3932251Z             {
2026-06-22T02:04:44.3932355Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3932452Z               "line": 694
2026-06-22T02:04:44.3932532Z             },
2026-06-22T02:04:44.3932613Z             {
2026-06-22T02:04:44.3932719Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3932800Z               "line": 747
2026-06-22T02:04:44.3932889Z             },
2026-06-22T02:04:44.3932971Z             {
2026-06-22T02:04:44.3933082Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3933170Z               "line": 785
2026-06-22T02:04:44.3933251Z             },
2026-06-22T02:04:44.3933337Z             {
2026-06-22T02:04:44.3933441Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3933530Z               "line": 8
2026-06-22T02:04:44.3933615Z             }
2026-06-22T02:04:44.3933697Z           ]
2026-06-22T02:04:44.3933784Z         },
2026-06-22T02:04:44.3933859Z         "int": {
2026-06-22T02:04:44.3933959Z           "complete": false,
2026-06-22T02:04:44.3934155Z           "evidence": []
2026-06-22T02:04:44.3934240Z         },
2026-06-22T02:04:44.3934322Z         "unit": {
2026-06-22T02:04:44.3934422Z           "complete": true,
2026-06-22T02:04:44.3934507Z           "evidence": [
2026-06-22T02:04:44.3934588Z             {
2026-06-22T02:04:44.3934794Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3934884Z               "line": 7638
2026-06-22T02:04:44.3934971Z             },
2026-06-22T02:04:44.3935046Z             {
2026-06-22T02:04:44.3935151Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.3935232Z               "line": 7649
2026-06-22T02:04:44.3935320Z             },
2026-06-22T02:04:44.3935409Z             {
2026-06-22T02:04:44.3935518Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3935610Z               "line": 879
2026-06-22T02:04:44.3935690Z             },
2026-06-22T02:04:44.3935776Z             {
2026-06-22T02:04:44.3935882Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3935973Z               "line": 928
2026-06-22T02:04:44.3936061Z             },
2026-06-22T02:04:44.3936142Z             {
2026-06-22T02:04:44.3936252Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3936336Z               "line": 979
2026-06-22T02:04:44.3936421Z             },
2026-06-22T02:04:44.3936506Z             {
2026-06-22T02:04:44.3936622Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3936712Z               "line": 996
2026-06-22T02:04:44.3936797Z             },
2026-06-22T02:04:44.3936884Z             {
2026-06-22T02:04:44.3936994Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3937084Z               "line": 1005
2026-06-22T02:04:44.3937170Z             },
2026-06-22T02:04:44.3937237Z             {
2026-06-22T02:04:44.3937351Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3937441Z               "line": 1016
2026-06-22T02:04:44.3937528Z             },
2026-06-22T02:04:44.3937618Z             {
2026-06-22T02:04:44.3937737Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3937818Z               "line": 1038
2026-06-22T02:04:44.3937904Z             },
2026-06-22T02:04:44.3937985Z             {
2026-06-22T02:04:44.3938090Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3938187Z               "line": 1057
2026-06-22T02:04:44.3938267Z             },
2026-06-22T02:04:44.3938347Z             {
2026-06-22T02:04:44.3938453Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3938534Z               "line": 1107
2026-06-22T02:04:44.3938624Z             },
2026-06-22T02:04:44.3938709Z             {
2026-06-22T02:04:44.3938824Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3938899Z               "line": 1136
2026-06-22T02:04:44.3939064Z             },
2026-06-22T02:04:44.3939145Z             {
2026-06-22T02:04:44.3939251Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3939349Z               "line": 1149
2026-06-22T02:04:44.3939426Z             },
2026-06-22T02:04:44.3939508Z             {
2026-06-22T02:04:44.3939631Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3939722Z               "line": 1215
2026-06-22T02:04:44.3939823Z             },
2026-06-22T02:04:44.3939904Z             {
2026-06-22T02:04:44.3940007Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3940095Z               "line": 1256
2026-06-22T02:04:44.3940180Z             },
2026-06-22T02:04:44.3940266Z             {
2026-06-22T02:04:44.3940371Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.3940457Z               "line": 1272
2026-06-22T02:04:44.3940533Z             },
2026-06-22T02:04:44.3940618Z             {
2026-06-22T02:04:44.3940725Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3940814Z               "line": 491
2026-06-22T02:04:44.3941000Z             },
2026-06-22T02:04:44.3941087Z             {
2026-06-22T02:04:44.3941204Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3941286Z               "line": 506
2026-06-22T02:04:44.3941369Z             },
2026-06-22T02:04:44.3941458Z             {
2026-06-22T02:04:44.3941566Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3941748Z               "line": 524
2026-06-22T02:04:44.3941834Z             },
2026-06-22T02:04:44.3941928Z             {
2026-06-22T02:04:44.3942024Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3942110Z               "line": 546
2026-06-22T02:04:44.3942191Z             },
2026-06-22T02:04:44.3942267Z             {
2026-06-22T02:04:44.3942378Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3942464Z               "line": 556
2026-06-22T02:04:44.3942548Z             },
2026-06-22T02:04:44.3942630Z             {
2026-06-22T02:04:44.3942730Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:04:44.3942816Z               "line": 582
2026-06-22T02:04:44.3942897Z             }
2026-06-22T02:04:44.3942974Z           ]
2026-06-22T02:04:44.3943055Z         }
2026-06-22T02:04:44.3943140Z       }
2026-06-22T02:04:44.3943221Z     },
2026-06-22T02:04:44.3943308Z     {
2026-06-22T02:04:44.3943411Z       "id": "REQ-RUN-SHORTCUT",
2026-06-22T02:04:44.3948011Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-22T02:04:44.3948122Z       "requiredStages": [
2026-06-22T02:04:44.3948216Z         "doc",
2026-06-22T02:04:44.3948302Z         "impl",
2026-06-22T02:04:44.3948388Z         "unit"
2026-06-22T02:04:44.3948469Z       ],
2026-06-22T02:04:44.3948554Z       "stages": {
2026-06-22T02:04:44.3948641Z         "doc": {
2026-06-22T02:04:44.3948742Z           "complete": true,
2026-06-22T02:04:44.3948836Z           "evidence": [
2026-06-22T02:04:44.3948917Z             {
2026-06-22T02:04:44.3949090Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.3949184Z               "line": 390
2026-06-22T02:04:44.3949269Z             }
2026-06-22T02:04:44.3949350Z           ]
2026-06-22T02:04:44.3949431Z         },
2026-06-22T02:04:44.3949515Z         "impl": {
2026-06-22T02:04:44.3949600Z           "complete": true,
2026-06-22T02:04:44.3949686Z           "evidence": [
2026-06-22T02:04:44.3949773Z             {
2026-06-22T02:04:44.3949896Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3950092Z               "line": 39
2026-06-22T02:04:44.3950168Z             },
2026-06-22T02:04:44.3950258Z             {
2026-06-22T02:04:44.3950378Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3950468Z               "line": 79
2026-06-22T02:04:44.3950549Z             },
2026-06-22T02:04:44.3950736Z             {
2026-06-22T02:04:44.3950859Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3950950Z               "line": 162
2026-06-22T02:04:44.3951027Z             }
2026-06-22T02:04:44.3951112Z           ]
2026-06-22T02:04:44.3951193Z         },
2026-06-22T02:04:44.3951275Z         "int": {
2026-06-22T02:04:44.3951360Z           "complete": false,
2026-06-22T02:04:44.3951455Z           "evidence": []
2026-06-22T02:04:44.3951536Z         },
2026-06-22T02:04:44.3951614Z         "unit": {
2026-06-22T02:04:44.3951694Z           "complete": true,
2026-06-22T02:04:44.3951784Z           "evidence": [
2026-06-22T02:04:44.3951866Z             {
2026-06-22T02:04:44.3951986Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3952074Z               "line": 206
2026-06-22T02:04:44.3952159Z             },
2026-06-22T02:04:44.3952246Z             {
2026-06-22T02:04:44.3952352Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3952446Z               "line": 222
2026-06-22T02:04:44.3952527Z             },
2026-06-22T02:04:44.3952609Z             {
2026-06-22T02:04:44.3952728Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3952813Z               "line": 238
2026-06-22T02:04:44.3952895Z             },
2026-06-22T02:04:44.3952981Z             {
2026-06-22T02:04:44.3953099Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3953195Z               "line": 251
2026-06-22T02:04:44.3953271Z             },
2026-06-22T02:04:44.3953357Z             {
2026-06-22T02:04:44.3953461Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:04:44.3953548Z               "line": 258
2026-06-22T02:04:44.3953638Z             }
2026-06-22T02:04:44.3953719Z           ]
2026-06-22T02:04:44.3953800Z         }
2026-06-22T02:04:44.3953882Z       }
2026-06-22T02:04:44.3953972Z     },
2026-06-22T02:04:44.3954053Z     {
2026-06-22T02:04:44.3954149Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-22T02:04:44.3954338Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-22T02:04:44.3954423Z       "requiredStages": [
2026-06-22T02:04:44.3954509Z         "impl",
2026-06-22T02:04:44.3954595Z         "unit"
2026-06-22T02:04:44.3954679Z       ],
2026-06-22T02:04:44.3954764Z       "stages": {
2026-06-22T02:04:44.3954846Z         "doc": {
2026-06-22T02:04:44.3954937Z           "complete": false,
2026-06-22T02:04:44.3955027Z           "evidence": []
2026-06-22T02:04:44.3955108Z         },
2026-06-22T02:04:44.3955190Z         "impl": {
2026-06-22T02:04:44.3955275Z           "complete": true,
2026-06-22T02:04:44.3955360Z           "evidence": [
2026-06-22T02:04:44.3955447Z             {
2026-06-22T02:04:44.3955571Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3955661Z               "line": 18
2026-06-22T02:04:44.3955748Z             },
2026-06-22T02:04:44.3955834Z             {
2026-06-22T02:04:44.3955943Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3956024Z               "line": 35
2026-06-22T02:04:44.3956105Z             },
2026-06-22T02:04:44.3956200Z             {
2026-06-22T02:04:44.3956309Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3956444Z               "line": 72
2026-06-22T02:04:44.3956557Z             }
2026-06-22T02:04:44.3956677Z           ]
2026-06-22T02:04:44.3956783Z         },
2026-06-22T02:04:44.3956862Z         "int": {
2026-06-22T02:04:44.3956963Z           "complete": false,
2026-06-22T02:04:44.3957055Z           "evidence": []
2026-06-22T02:04:44.3957145Z         },
2026-06-22T02:04:44.3957229Z         "unit": {
2026-06-22T02:04:44.3957410Z           "complete": true,
2026-06-22T02:04:44.3957494Z           "evidence": [
2026-06-22T02:04:44.3957589Z             {
2026-06-22T02:04:44.3957713Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3957790Z               "line": 239
2026-06-22T02:04:44.3957875Z             },
2026-06-22T02:04:44.3958019Z             {
2026-06-22T02:04:44.3958133Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3958213Z               "line": 256
2026-06-22T02:04:44.3958305Z             },
2026-06-22T02:04:44.3961568Z             {
2026-06-22T02:04:44.3961739Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3961835Z               "line": 265
2026-06-22T02:04:44.3961925Z             }
2026-06-22T02:04:44.3962006Z           ]
2026-06-22T02:04:44.3962087Z         }
2026-06-22T02:04:44.3962179Z       }
2026-06-22T02:04:44.3962259Z     },
2026-06-22T02:04:44.3962339Z     {
2026-06-22T02:04:44.3962441Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-22T02:04:44.3962602Z       "title": "Hostable endpoint-types capability declaration",
2026-06-22T02:04:44.3962701Z       "requiredStages": [
2026-06-22T02:04:44.3962791Z         "impl",
2026-06-22T02:04:44.3962883Z         "unit"
2026-06-22T02:04:44.3962968Z       ],
2026-06-22T02:04:44.3963053Z       "stages": {
2026-06-22T02:04:44.3963145Z         "doc": {
2026-06-22T02:04:44.3963240Z           "complete": false,
2026-06-22T02:04:44.3963330Z           "evidence": []
2026-06-22T02:04:44.3963416Z         },
2026-06-22T02:04:44.3963512Z         "impl": {
2026-06-22T02:04:44.3963593Z           "complete": true,
2026-06-22T02:04:44.3963678Z           "evidence": [
2026-06-22T02:04:44.3963765Z             {
2026-06-22T02:04:44.3963888Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3963974Z               "line": 598
2026-06-22T02:04:44.3964055Z             }
2026-06-22T02:04:44.3964142Z           ]
2026-06-22T02:04:44.3964227Z         },
2026-06-22T02:04:44.3964308Z         "int": {
2026-06-22T02:04:44.3964409Z           "complete": false,
2026-06-22T02:04:44.3964490Z           "evidence": []
2026-06-22T02:04:44.3964574Z         },
2026-06-22T02:04:44.3964646Z         "unit": {
2026-06-22T02:04:44.3964738Z           "complete": true,
2026-06-22T02:04:44.3964828Z           "evidence": [
2026-06-22T02:04:44.3964912Z             {
2026-06-22T02:04:44.3965022Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.3965113Z               "line": 967
2026-06-22T02:04:44.3965197Z             }
2026-06-22T02:04:44.3965282Z           ]
2026-06-22T02:04:44.3965368Z         }
2026-06-22T02:04:44.3965454Z       }
2026-06-22T02:04:44.3965535Z     },
2026-06-22T02:04:44.3965620Z     {
2026-06-22T02:04:44.3965721Z       "id": "REQ-SEAM-HISTORY",
2026-06-22T02:04:44.3965896Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-22T02:04:44.3965993Z       "requiredStages": [
2026-06-22T02:04:44.3966075Z         "impl",
2026-06-22T02:04:44.3966164Z         "unit",
2026-06-22T02:04:44.3966249Z         "int"
2026-06-22T02:04:44.3966332Z       ],
2026-06-22T02:04:44.3966422Z       "stages": {
2026-06-22T02:04:44.3966498Z         "doc": {
2026-06-22T02:04:44.3966584Z           "complete": false,
2026-06-22T02:04:44.3966680Z           "evidence": []
2026-06-22T02:04:44.3966779Z         },
2026-06-22T02:04:44.3966865Z         "impl": {
2026-06-22T02:04:44.3966957Z           "complete": true,
2026-06-22T02:04:44.3967047Z           "evidence": [
2026-06-22T02:04:44.3967137Z             {
2026-06-22T02:04:44.3967247Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.3967338Z               "line": 24
2026-06-22T02:04:44.3967418Z             },
2026-06-22T02:04:44.3967499Z             {
2026-06-22T02:04:44.3967615Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3967705Z               "line": 22
2026-06-22T02:04:44.3967784Z             }
2026-06-22T02:04:44.3967874Z           ]
2026-06-22T02:04:44.3967956Z         },
2026-06-22T02:04:44.3968182Z         "int": {
2026-06-22T02:04:44.3968264Z           "complete": true,
2026-06-22T02:04:44.3968360Z           "evidence": [
2026-06-22T02:04:44.3968430Z             {
2026-06-22T02:04:44.3968560Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.3968636Z               "line": 260
2026-06-22T02:04:44.3968826Z             }
2026-06-22T02:04:44.3968903Z           ]
2026-06-22T02:04:44.3969078Z         },
2026-06-22T02:04:44.3969170Z         "unit": {
2026-06-22T02:04:44.3969247Z           "complete": true,
2026-06-22T02:04:44.3969331Z           "evidence": [
2026-06-22T02:04:44.3969417Z             {
2026-06-22T02:04:44.3969585Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.3969670Z               "line": 171
2026-06-22T02:04:44.3969751Z             },
2026-06-22T02:04:44.3969829Z             {
2026-06-22T02:04:44.3969938Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.3970028Z               "line": 200
2026-06-22T02:04:44.3970114Z             },
2026-06-22T02:04:44.3970196Z             {
2026-06-22T02:04:44.3970299Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:04:44.3970384Z               "line": 220
2026-06-22T02:04:44.3970466Z             },
2026-06-22T02:04:44.3970547Z             {
2026-06-22T02:04:44.3970668Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3970748Z               "line": 199
2026-06-22T02:04:44.3970835Z             },
2026-06-22T02:04:44.3970926Z             {
2026-06-22T02:04:44.3971040Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3971126Z               "line": 219
2026-06-22T02:04:44.3971208Z             },
2026-06-22T02:04:44.3971293Z             {
2026-06-22T02:04:44.3971407Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3971498Z               "line": 244
2026-06-22T02:04:44.3971579Z             },
2026-06-22T02:04:44.3971655Z             {
2026-06-22T02:04:44.3971771Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3971846Z               "line": 276
2026-06-22T02:04:44.3971927Z             },
2026-06-22T02:04:44.3972008Z             {
2026-06-22T02:04:44.3972119Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3972199Z               "line": 297
2026-06-22T02:04:44.3972280Z             },
2026-06-22T02:04:44.3972361Z             {
2026-06-22T02:04:44.3972476Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:04:44.3972556Z               "line": 324
2026-06-22T02:04:44.3972642Z             }
2026-06-22T02:04:44.3972729Z           ]
2026-06-22T02:04:44.3972814Z         }
2026-06-22T02:04:44.3972885Z       }
2026-06-22T02:04:44.3972967Z     },
2026-06-22T02:04:44.3973044Z     {
2026-06-22T02:04:44.3973143Z       "id": "REQ-SEAM-INJECT",
2026-06-22T02:04:44.3973303Z       "title": "inject-input methods configurable per activity-state",
2026-06-22T02:04:44.3973404Z       "requiredStages": [
2026-06-22T02:04:44.3973495Z         "impl",
2026-06-22T02:04:44.3973580Z         "unit"
2026-06-22T02:04:44.3973666Z       ],
2026-06-22T02:04:44.3973753Z       "stages": {
2026-06-22T02:04:44.3973834Z         "doc": {
2026-06-22T02:04:44.3973928Z           "complete": false,
2026-06-22T02:04:44.3974020Z           "evidence": []
2026-06-22T02:04:44.3974106Z         },
2026-06-22T02:04:44.3974191Z         "impl": {
2026-06-22T02:04:44.3974287Z           "complete": true,
2026-06-22T02:04:44.3974377Z           "evidence": [
2026-06-22T02:04:44.3974463Z             {
2026-06-22T02:04:44.3974572Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3974669Z               "line": 19
2026-06-22T02:04:44.3974749Z             },
2026-06-22T02:04:44.3974830Z             {
2026-06-22T02:04:44.3974950Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3975031Z               "line": 111
2026-06-22T02:04:44.3975116Z             }
2026-06-22T02:04:44.3975197Z           ]
2026-06-22T02:04:44.3975384Z         },
2026-06-22T02:04:44.3975468Z         "int": {
2026-06-22T02:04:44.3975553Z           "complete": false,
2026-06-22T02:04:44.3975649Z           "evidence": []
2026-06-22T02:04:44.3975729Z         },
2026-06-22T02:04:44.3975818Z         "unit": {
2026-06-22T02:04:44.3975904Z           "complete": true,
2026-06-22T02:04:44.3976095Z           "evidence": [
2026-06-22T02:04:44.3976180Z             {
2026-06-22T02:04:44.3976301Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3976395Z               "line": 345
2026-06-22T02:04:44.3976480Z             },
2026-06-22T02:04:44.3976563Z             {
2026-06-22T02:04:44.3976672Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.3976772Z               "line": 365
2026-06-22T02:04:44.3976853Z             }
2026-06-22T02:04:44.3976935Z           ]
2026-06-22T02:04:44.3977020Z         }
2026-06-22T02:04:44.3977101Z       }
2026-06-22T02:04:44.3977187Z     },
2026-06-22T02:04:44.3977269Z     {
2026-06-22T02:04:44.3977378Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-22T02:04:44.3977522Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-22T02:04:44.3977612Z       "requiredStages": [
2026-06-22T02:04:44.3977692Z         "impl",
2026-06-22T02:04:44.3977773Z         "unit"
2026-06-22T02:04:44.3977856Z       ],
2026-06-22T02:04:44.3977936Z       "stages": {
2026-06-22T02:04:44.3978026Z         "doc": {
2026-06-22T02:04:44.3978113Z           "complete": false,
2026-06-22T02:04:44.3978204Z           "evidence": []
2026-06-22T02:04:44.3978288Z         },
2026-06-22T02:04:44.3978368Z         "impl": {
2026-06-22T02:04:44.3978459Z           "complete": true,
2026-06-22T02:04:44.3978549Z           "evidence": [
2026-06-22T02:04:44.3978633Z             {
2026-06-22T02:04:44.3978752Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3978833Z               "line": 18
2026-06-22T02:04:44.3978920Z             },
2026-06-22T02:04:44.3979081Z             {
2026-06-22T02:04:44.3979201Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3979282Z               "line": 431
2026-06-22T02:04:44.3979357Z             }
2026-06-22T02:04:44.3979440Z           ]
2026-06-22T02:04:44.3979525Z         },
2026-06-22T02:04:44.3979606Z         "int": {
2026-06-22T02:04:44.3979696Z           "complete": false,
2026-06-22T02:04:44.3979792Z           "evidence": []
2026-06-22T02:04:44.3979877Z         },
2026-06-22T02:04:44.3979963Z         "unit": {
2026-06-22T02:04:44.3980064Z           "complete": true,
2026-06-22T02:04:44.3980145Z           "evidence": [
2026-06-22T02:04:44.3980234Z             {
2026-06-22T02:04:44.3980350Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3980436Z               "line": 881
2026-06-22T02:04:44.3980521Z             },
2026-06-22T02:04:44.3980607Z             {
2026-06-22T02:04:44.3980718Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3980799Z               "line": 891
2026-06-22T02:04:44.3980888Z             }
2026-06-22T02:04:44.3980968Z           ]
2026-06-22T02:04:44.3981049Z         }
2026-06-22T02:04:44.3981135Z       }
2026-06-22T02:04:44.3981223Z     },
2026-06-22T02:04:44.3981309Z     {
2026-06-22T02:04:44.3981391Z       "id": "REQ-SEAM-PSYCHE",
2026-06-22T02:04:44.3981533Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-22T02:04:44.3981619Z       "requiredStages": [
2026-06-22T02:04:44.3981706Z         "impl",
2026-06-22T02:04:44.3981791Z         "unit",
2026-06-22T02:04:44.3981876Z         "int"
2026-06-22T02:04:44.3981962Z       ],
2026-06-22T02:04:44.3982050Z       "stages": {
2026-06-22T02:04:44.3982135Z         "doc": {
2026-06-22T02:04:44.3982220Z           "complete": false,
2026-06-22T02:04:44.3982307Z           "evidence": []
2026-06-22T02:04:44.3982388Z         },
2026-06-22T02:04:44.3982468Z         "impl": {
2026-06-22T02:04:44.3982568Z           "complete": true,
2026-06-22T02:04:44.3982650Z           "evidence": [
2026-06-22T02:04:44.3982731Z             {
2026-06-22T02:04:44.3982951Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:04:44.3983045Z               "line": 19
2026-06-22T02:04:44.3983121Z             },
2026-06-22T02:04:44.3983207Z             {
2026-06-22T02:04:44.3983323Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T02:04:44.3983503Z               "line": 12
2026-06-22T02:04:44.3983585Z             },
2026-06-22T02:04:44.3983671Z             {
2026-06-22T02:04:44.3983783Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.3983863Z               "line": 301
2026-06-22T02:04:44.3983955Z             }
2026-06-22T02:04:44.3984041Z           ]
2026-06-22T02:04:44.3984121Z         },
2026-06-22T02:04:44.3984212Z         "int": {
2026-06-22T02:04:44.3984303Z           "complete": true,
2026-06-22T02:04:44.3984389Z           "evidence": [
2026-06-22T02:04:44.3984474Z             {
2026-06-22T02:04:44.3984595Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.3984690Z               "line": 259
2026-06-22T02:04:44.3984770Z             }
2026-06-22T02:04:44.3984852Z           ]
2026-06-22T02:04:44.3984933Z         },
2026-06-22T02:04:44.3985023Z         "unit": {
2026-06-22T02:04:44.3985113Z           "complete": true,
2026-06-22T02:04:44.3985195Z           "evidence": [
2026-06-22T02:04:44.3985286Z             {
2026-06-22T02:04:44.3985390Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:04:44.3985476Z               "line": 195
2026-06-22T02:04:44.3985558Z             },
2026-06-22T02:04:44.3985638Z             {
2026-06-22T02:04:44.3985748Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:04:44.3985829Z               "line": 202
2026-06-22T02:04:44.3985910Z             },
2026-06-22T02:04:44.3985990Z             {
2026-06-22T02:04:44.3986095Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:04:44.3986181Z               "line": 225
2026-06-22T02:04:44.3986261Z             },
2026-06-22T02:04:44.3986350Z             {
2026-06-22T02:04:44.3986459Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:04:44.3986541Z               "line": 106
2026-06-22T02:04:44.3986622Z             },
2026-06-22T02:04:44.3986707Z             {
2026-06-22T02:04:44.3986818Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:04:44.3986908Z               "line": 137
2026-06-22T02:04:44.3986993Z             },
2026-06-22T02:04:44.3987069Z             {
2026-06-22T02:04:44.3987175Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:04:44.3987251Z               "line": 161
2026-06-22T02:04:44.3987332Z             }
2026-06-22T02:04:44.3987418Z           ]
2026-06-22T02:04:44.3987500Z         }
2026-06-22T02:04:44.3987585Z       }
2026-06-22T02:04:44.3987661Z     },
2026-06-22T02:04:44.3987737Z     {
2026-06-22T02:04:44.3987833Z       "id": "REQ-SEAM-RESUME",
2026-06-22T02:04:44.3988009Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-22T02:04:44.3988115Z       "requiredStages": [
2026-06-22T02:04:44.3988228Z         "impl",
2026-06-22T02:04:44.3988343Z         "unit"
2026-06-22T02:04:44.3988435Z       ],
2026-06-22T02:04:44.3988519Z       "stages": {
2026-06-22T02:04:44.3988606Z         "doc": {
2026-06-22T02:04:44.3988701Z           "complete": false,
2026-06-22T02:04:44.3988788Z           "evidence": []
2026-06-22T02:04:44.3988872Z         },
2026-06-22T02:04:44.3989043Z         "impl": {
2026-06-22T02:04:44.3989133Z           "complete": true,
2026-06-22T02:04:44.3989213Z           "evidence": [
2026-06-22T02:04:44.3989288Z             {
2026-06-22T02:04:44.3989408Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.3989490Z               "line": 19
2026-06-22T02:04:44.3989579Z             }
2026-06-22T02:04:44.3989670Z           ]
2026-06-22T02:04:44.3989752Z         },
2026-06-22T02:04:44.3989828Z         "int": {
2026-06-22T02:04:44.3989922Z           "complete": false,
2026-06-22T02:04:44.3990009Z           "evidence": []
2026-06-22T02:04:44.3990185Z         },
2026-06-22T02:04:44.3990271Z         "unit": {
2026-06-22T02:04:44.3990357Z           "complete": true,
2026-06-22T02:04:44.3990438Z           "evidence": [
2026-06-22T02:04:44.3990514Z             {
2026-06-22T02:04:44.3990619Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.3990834Z               "line": 201
2026-06-22T02:04:44.3990920Z             },
2026-06-22T02:04:44.3991006Z             {
2026-06-22T02:04:44.3991114Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.3991205Z               "line": 223
2026-06-22T02:04:44.3991288Z             },
2026-06-22T02:04:44.3991373Z             {
2026-06-22T02:04:44.3991481Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:04:44.3991571Z               "line": 244
2026-06-22T02:04:44.3991652Z             }
2026-06-22T02:04:44.3991732Z           ]
2026-06-22T02:04:44.3991807Z         }
2026-06-22T02:04:44.3991888Z       }
2026-06-22T02:04:44.3991975Z     },
2026-06-22T02:04:44.3992061Z     {
2026-06-22T02:04:44.3992165Z       "id": "REQ-SEAM-SPAWN",
2026-06-22T02:04:44.3992266Z       "title": "spawn-session seam",
2026-06-22T02:04:44.3992356Z       "requiredStages": [
2026-06-22T02:04:44.3992441Z         "impl",
2026-06-22T02:04:44.3992527Z         "unit"
2026-06-22T02:04:44.3992614Z       ],
2026-06-22T02:04:44.3992705Z       "stages": {
2026-06-22T02:04:44.3992780Z         "doc": {
2026-06-22T02:04:44.3992881Z           "complete": false,
2026-06-22T02:04:44.3992957Z           "evidence": []
2026-06-22T02:04:44.3993038Z         },
2026-06-22T02:04:44.3993128Z         "impl": {
2026-06-22T02:04:44.3993210Z           "complete": true,
2026-06-22T02:04:44.3993296Z           "evidence": [
2026-06-22T02:04:44.3993381Z             {
2026-06-22T02:04:44.3993501Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3993587Z               "line": 20
2026-06-22T02:04:44.3993676Z             }
2026-06-22T02:04:44.3993753Z           ]
2026-06-22T02:04:44.3993835Z         },
2026-06-22T02:04:44.3993921Z         "int": {
2026-06-22T02:04:44.3994015Z           "complete": false,
2026-06-22T02:04:44.3994111Z           "evidence": []
2026-06-22T02:04:44.3994188Z         },
2026-06-22T02:04:44.3994264Z         "unit": {
2026-06-22T02:04:44.3994343Z           "complete": true,
2026-06-22T02:04:44.3994428Z           "evidence": [
2026-06-22T02:04:44.3994515Z             {
2026-06-22T02:04:44.3994630Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3994710Z               "line": 608
2026-06-22T02:04:44.3994796Z             },
2026-06-22T02:04:44.3994883Z             {
2026-06-22T02:04:44.3995006Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3995092Z               "line": 615
2026-06-22T02:04:44.3995178Z             },
2026-06-22T02:04:44.3995259Z             {
2026-06-22T02:04:44.3995378Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3995465Z               "line": 721
2026-06-22T02:04:44.3995550Z             },
2026-06-22T02:04:44.3995635Z             {
2026-06-22T02:04:44.3995755Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3995841Z               "line": 727
2026-06-22T02:04:44.3995922Z             },
2026-06-22T02:04:44.3996012Z             {
2026-06-22T02:04:44.3996137Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3996226Z               "line": 752
2026-06-22T02:04:44.3996317Z             },
2026-06-22T02:04:44.3996399Z             {
2026-06-22T02:04:44.3996517Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:04:44.3996607Z               "line": 789
2026-06-22T02:04:44.3996683Z             }
2026-06-22T02:04:44.3996760Z           ]
2026-06-22T02:04:44.3996844Z         }
2026-06-22T02:04:44.3996934Z       }
2026-06-22T02:04:44.3997015Z     },
2026-06-22T02:04:44.3997101Z     {
2026-06-22T02:04:44.3997196Z       "id": "REQ-SEAM-UPDATE",
2026-06-22T02:04:44.3997363Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-22T02:04:44.3997553Z       "requiredStages": [
2026-06-22T02:04:44.3997634Z         "impl",
2026-06-22T02:04:44.3997721Z         "unit"
2026-06-22T02:04:44.3997807Z       ],
2026-06-22T02:04:44.3997892Z       "stages": {
2026-06-22T02:04:44.3998036Z         "doc": {
2026-06-22T02:04:44.3998131Z           "complete": false,
2026-06-22T02:04:44.3998231Z           "evidence": []
2026-06-22T02:04:44.3998303Z         },
2026-06-22T02:04:44.3998393Z         "impl": {
2026-06-22T02:04:44.3998474Z           "complete": true,
2026-06-22T02:04:44.3998569Z           "evidence": [
2026-06-22T02:04:44.3998642Z             {
2026-06-22T02:04:44.3998774Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.3998855Z               "line": 28
2026-06-22T02:04:44.3999023Z             },
2026-06-22T02:04:44.3999103Z             {
2026-06-22T02:04:44.3999238Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.3999371Z               "line": 88
2026-06-22T02:04:44.3999451Z             }
2026-06-22T02:04:44.3999531Z           ]
2026-06-22T02:04:44.3999613Z         },
2026-06-22T02:04:44.3999697Z         "int": {
2026-06-22T02:04:44.3999792Z           "complete": false,
2026-06-22T02:04:44.3999877Z           "evidence": []
2026-06-22T02:04:44.3999968Z         },
2026-06-22T02:04:44.4000045Z         "unit": {
2026-06-22T02:04:44.4000144Z           "complete": true,
2026-06-22T02:04:44.4000225Z           "evidence": [
2026-06-22T02:04:44.4000307Z             {
2026-06-22T02:04:44.4000430Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4000511Z               "line": 326
2026-06-22T02:04:44.4000598Z             },
2026-06-22T02:04:44.4000679Z             {
2026-06-22T02:04:44.4000797Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4000889Z               "line": 337
2026-06-22T02:04:44.4000965Z             }
2026-06-22T02:04:44.4001051Z           ]
2026-06-22T02:04:44.4001126Z         }
2026-06-22T02:04:44.4001214Z       }
2026-06-22T02:04:44.4001299Z     },
2026-06-22T02:04:44.4001379Z     {
2026-06-22T02:04:44.4001470Z       "id": "REQ-SEC-1",
2026-06-22T02:04:44.4001853Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-22T02:04:44.4001952Z       "requiredStages": [
2026-06-22T02:04:44.4002031Z         "impl",
2026-06-22T02:04:44.4002117Z         "unit"
2026-06-22T02:04:44.4002193Z       ],
2026-06-22T02:04:44.4002274Z       "stages": {
2026-06-22T02:04:44.4002358Z         "doc": {
2026-06-22T02:04:44.4002443Z           "complete": false,
2026-06-22T02:04:44.4002535Z           "evidence": []
2026-06-22T02:04:44.4002617Z         },
2026-06-22T02:04:44.4002696Z         "impl": {
2026-06-22T02:04:44.4002782Z           "complete": true,
2026-06-22T02:04:44.4002869Z           "evidence": [
2026-06-22T02:04:44.4002950Z             {
2026-06-22T02:04:44.4003064Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.4003146Z               "line": 86
2026-06-22T02:04:44.4003231Z             },
2026-06-22T02:04:44.4003316Z             {
2026-06-22T02:04:44.4003422Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.4003517Z               "line": 116
2026-06-22T02:04:44.4003598Z             },
2026-06-22T02:04:44.4003674Z             {
2026-06-22T02:04:44.4003794Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.4003884Z               "line": 130
2026-06-22T02:04:44.4003974Z             },
2026-06-22T02:04:44.4004051Z             {
2026-06-22T02:04:44.4004171Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4004256Z               "line": 109
2026-06-22T02:04:44.4004342Z             },
2026-06-22T02:04:44.4004424Z             {
2026-06-22T02:04:44.4004532Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4004720Z               "line": 130
2026-06-22T02:04:44.4004805Z             },
2026-06-22T02:04:44.4004889Z             {
2026-06-22T02:04:44.4004998Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4005080Z               "line": 143
2026-06-22T02:04:44.4005172Z             },
2026-06-22T02:04:44.4005347Z             {
2026-06-22T02:04:44.4005457Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4005542Z               "line": 209
2026-06-22T02:04:44.4005623Z             },
2026-06-22T02:04:44.4005715Z             {
2026-06-22T02:04:44.4005825Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4005914Z               "line": 235
2026-06-22T02:04:44.4005996Z             },
2026-06-22T02:04:44.4006082Z             {
2026-06-22T02:04:44.4006186Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4006272Z               "line": 5295
2026-06-22T02:04:44.4006359Z             }
2026-06-22T02:04:44.4006438Z           ]
2026-06-22T02:04:44.4006524Z         },
2026-06-22T02:04:44.4006611Z         "int": {
2026-06-22T02:04:44.4006707Z           "complete": false,
2026-06-22T02:04:44.4006801Z           "evidence": []
2026-06-22T02:04:44.4006887Z         },
2026-06-22T02:04:44.4006974Z         "unit": {
2026-06-22T02:04:44.4007064Z           "complete": true,
2026-06-22T02:04:44.4007163Z           "evidence": [
2026-06-22T02:04:44.4007243Z             {
2026-06-22T02:04:44.4007358Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.4007451Z               "line": 142
2026-06-22T02:04:44.4007536Z             },
2026-06-22T02:04:44.4007628Z             {
2026-06-22T02:04:44.4007738Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.4007832Z               "line": 194
2026-06-22T02:04:44.4007914Z             },
2026-06-22T02:04:44.4007995Z             {
2026-06-22T02:04:44.4008104Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:04:44.4008184Z               "line": 235
2026-06-22T02:04:44.4008268Z             },
2026-06-22T02:04:44.4008348Z             {
2026-06-22T02:04:44.4008471Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-22T02:04:44.4008553Z               "line": 140
2026-06-22T02:04:44.4008638Z             },
2026-06-22T02:04:44.4008724Z             {
2026-06-22T02:04:44.4008834Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4008916Z               "line": 247
2026-06-22T02:04:44.4009067Z             },
2026-06-22T02:04:44.4009158Z             {
2026-06-22T02:04:44.4009268Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4009363Z               "line": 277
2026-06-22T02:04:44.4009458Z             },
2026-06-22T02:04:44.4009546Z             {
2026-06-22T02:04:44.4009663Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4009754Z               "line": 310
2026-06-22T02:04:44.4009836Z             },
2026-06-22T02:04:44.4009912Z             {
2026-06-22T02:04:44.4010035Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4010115Z               "line": 329
2026-06-22T02:04:44.4010197Z             },
2026-06-22T02:04:44.4010285Z             {
2026-06-22T02:04:44.4010389Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4010480Z               "line": 362
2026-06-22T02:04:44.4010562Z             },
2026-06-22T02:04:44.4010647Z             {
2026-06-22T02:04:44.4010757Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:04:44.4010843Z               "line": 386
2026-06-22T02:04:44.4010929Z             },
2026-06-22T02:04:44.4011014Z             {
2026-06-22T02:04:44.4011115Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4011201Z               "line": 8296
2026-06-22T02:04:44.4011286Z             }
2026-06-22T02:04:44.4011371Z           ]
2026-06-22T02:04:44.4011444Z         }
2026-06-22T02:04:44.4011530Z       }
2026-06-22T02:04:44.4011611Z     },
2026-06-22T02:04:44.4011696Z     {
2026-06-22T02:04:44.4011897Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-22T02:04:44.4015549Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-22T02:04:44.4015774Z       "requiredStages": [
2026-06-22T02:04:44.4015873Z         "impl",
2026-06-22T02:04:44.4015955Z         "unit",
2026-06-22T02:04:44.4016041Z         "int"
2026-06-22T02:04:44.4016112Z       ],
2026-06-22T02:04:44.4016193Z       "stages": {
2026-06-22T02:04:44.4016285Z         "doc": {
2026-06-22T02:04:44.4016380Z           "complete": false,
2026-06-22T02:04:44.4016479Z           "evidence": []
2026-06-22T02:04:44.4016561Z         },
2026-06-22T02:04:44.4016651Z         "impl": {
2026-06-22T02:04:44.4016742Z           "complete": true,
2026-06-22T02:04:44.4016837Z           "evidence": [
2026-06-22T02:04:44.4016924Z             {
2026-06-22T02:04:44.4017032Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4017123Z               "line": 1160
2026-06-22T02:04:44.4017200Z             },
2026-06-22T02:04:44.4017281Z             {
2026-06-22T02:04:44.4017399Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.4017485Z               "line": 1775
2026-06-22T02:04:44.4017568Z             },
2026-06-22T02:04:44.4017652Z             {
2026-06-22T02:04:44.4017751Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4017842Z               "line": 2850
2026-06-22T02:04:44.4017923Z             }
2026-06-22T02:04:44.4017997Z           ]
2026-06-22T02:04:44.4018087Z         },
2026-06-22T02:04:44.4018178Z         "int": {
2026-06-22T02:04:44.4018265Z           "complete": true,
2026-06-22T02:04:44.4018364Z           "evidence": [
2026-06-22T02:04:44.4018440Z             {
2026-06-22T02:04:44.4018570Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.4018655Z               "line": 189
2026-06-22T02:04:44.4018740Z             },
2026-06-22T02:04:44.4018832Z             {
2026-06-22T02:04:44.4019079Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:04:44.4019176Z               "line": 524
2026-06-22T02:04:44.4019256Z             }
2026-06-22T02:04:44.4019341Z           ]
2026-06-22T02:04:44.4019423Z         },
2026-06-22T02:04:44.4019509Z         "unit": {
2026-06-22T02:04:44.4019595Z           "complete": true,
2026-06-22T02:04:44.4019680Z           "evidence": [
2026-06-22T02:04:44.4019762Z             {
2026-06-22T02:04:44.4019880Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.4019961Z               "line": 980
2026-06-22T02:04:44.4020043Z             },
2026-06-22T02:04:44.4020120Z             {
2026-06-22T02:04:44.4020233Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4020314Z               "line": 7486
2026-06-22T02:04:44.4020396Z             }
2026-06-22T02:04:44.4020482Z           ]
2026-06-22T02:04:44.4020685Z         }
2026-06-22T02:04:44.4020771Z       }
2026-06-22T02:04:44.4020850Z     },
2026-06-22T02:04:44.4020940Z     {
2026-06-22T02:04:44.4021045Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-22T02:04:44.4027851Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-22T02:04:44.4028080Z       "requiredStages": [
2026-06-22T02:04:44.4028161Z         "doc",
2026-06-22T02:04:44.4028245Z         "impl",
2026-06-22T02:04:44.4028335Z         "unit",
2026-06-22T02:04:44.4028416Z         "int"
2026-06-22T02:04:44.4028497Z       ],
2026-06-22T02:04:44.4028581Z       "stages": {
2026-06-22T02:04:44.4028666Z         "doc": {
2026-06-22T02:04:44.4028772Z           "complete": true,
2026-06-22T02:04:44.4028863Z           "evidence": [
2026-06-22T02:04:44.4029024Z             {
2026-06-22T02:04:44.4029168Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T02:04:44.4029257Z               "line": 130
2026-06-22T02:04:44.4029344Z             },
2026-06-22T02:04:44.4029426Z             {
2026-06-22T02:04:44.4029530Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.4029610Z               "line": 96
2026-06-22T02:04:44.4029697Z             }
2026-06-22T02:04:44.4029783Z           ]
2026-06-22T02:04:44.4029864Z         },
2026-06-22T02:04:44.4029949Z         "impl": {
2026-06-22T02:04:44.4030050Z           "complete": true,
2026-06-22T02:04:44.4030135Z           "evidence": [
2026-06-22T02:04:44.4030221Z             {
2026-06-22T02:04:44.4030346Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.4030431Z               "line": 77
2026-06-22T02:04:44.4030512Z             },
2026-06-22T02:04:44.4030598Z             {
2026-06-22T02:04:44.4030723Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.4030817Z               "line": 183
2026-06-22T02:04:44.4030995Z             },
2026-06-22T02:04:44.4031079Z             {
2026-06-22T02:04:44.4031207Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4031288Z               "line": 222
2026-06-22T02:04:44.4031374Z             },
2026-06-22T02:04:44.4031462Z             {
2026-06-22T02:04:44.4031673Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4031758Z               "line": 71
2026-06-22T02:04:44.4031848Z             },
2026-06-22T02:04:44.4031925Z             {
2026-06-22T02:04:44.4032050Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.4032134Z               "line": 176
2026-06-22T02:04:44.4032216Z             }
2026-06-22T02:04:44.4032293Z           ]
2026-06-22T02:04:44.4032374Z         },
2026-06-22T02:04:44.4032458Z         "int": {
2026-06-22T02:04:44.4032550Z           "complete": true,
2026-06-22T02:04:44.4032640Z           "evidence": [
2026-06-22T02:04:44.4032721Z             {
2026-06-22T02:04:44.4032845Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-22T02:04:44.4032951Z               "line": 25
2026-06-22T02:04:44.4033031Z             }
2026-06-22T02:04:44.4033117Z           ]
2026-06-22T02:04:44.4033194Z         },
2026-06-22T02:04:44.4033284Z         "unit": {
2026-06-22T02:04:44.4036342Z           "complete": true,
2026-06-22T02:04:44.4036485Z           "evidence": [
2026-06-22T02:04:44.4036575Z             {
2026-06-22T02:04:44.4036722Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.4036818Z               "line": 341
2026-06-22T02:04:44.4036904Z             },
2026-06-22T02:04:44.4036989Z             {
2026-06-22T02:04:44.4037128Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:04:44.4037218Z               "line": 391
2026-06-22T02:04:44.4037294Z             },
2026-06-22T02:04:44.4037376Z             {
2026-06-22T02:04:44.4037514Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4037599Z               "line": 1244
2026-06-22T02:04:44.4037686Z             },
2026-06-22T02:04:44.4037767Z             {
2026-06-22T02:04:44.4037900Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4037981Z               "line": 184
2026-06-22T02:04:44.4038063Z             },
2026-06-22T02:04:44.4038152Z             {
2026-06-22T02:04:44.4038267Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4038354Z               "line": 208
2026-06-22T02:04:44.4038444Z             },
2026-06-22T02:04:44.4038525Z             {
2026-06-22T02:04:44.4038635Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4038716Z               "line": 236
2026-06-22T02:04:44.4038801Z             },
2026-06-22T02:04:44.4038876Z             {
2026-06-22T02:04:44.4039094Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:04:44.4039189Z               "line": 945
2026-06-22T02:04:44.4039265Z             }
2026-06-22T02:04:44.4039352Z           ]
2026-06-22T02:04:44.4039442Z         }
2026-06-22T02:04:44.4039536Z       }
2026-06-22T02:04:44.4039618Z     },
2026-06-22T02:04:44.4039704Z     {
2026-06-22T02:04:44.4039789Z       "id": "REQ-SHELL-1",
2026-06-22T02:04:44.4040648Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-22T02:04:44.4040753Z       "requiredStages": [
2026-06-22T02:04:44.4040839Z         "impl",
2026-06-22T02:04:44.4040935Z         "unit",
2026-06-22T02:04:44.4041019Z         "int"
2026-06-22T02:04:44.4041100Z       ],
2026-06-22T02:04:44.4041183Z       "stages": {
2026-06-22T02:04:44.4041269Z         "doc": {
2026-06-22T02:04:44.4041362Z           "complete": false,
2026-06-22T02:04:44.4041454Z           "evidence": []
2026-06-22T02:04:44.4041682Z         },
2026-06-22T02:04:44.4041772Z         "impl": {
2026-06-22T02:04:44.4041872Z           "complete": true,
2026-06-22T02:04:44.4041966Z           "evidence": [
2026-06-22T02:04:44.4042041Z             {
2026-06-22T02:04:44.4042170Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4042351Z               "line": 189
2026-06-22T02:04:44.4042437Z             },
2026-06-22T02:04:44.4042519Z             {
2026-06-22T02:04:44.4042633Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4042718Z               "line": 268
2026-06-22T02:04:44.4042805Z             },
2026-06-22T02:04:44.4042881Z             {
2026-06-22T02:04:44.4042999Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4043086Z               "line": 27
2026-06-22T02:04:44.4043177Z             },
2026-06-22T02:04:44.4043257Z             {
2026-06-22T02:04:44.4043381Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4043473Z               "line": 52
2026-06-22T02:04:44.4043557Z             },
2026-06-22T02:04:44.4043634Z             {
2026-06-22T02:04:44.4043754Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4043840Z               "line": 144
2026-06-22T02:04:44.4043920Z             },
2026-06-22T02:04:44.4044006Z             {
2026-06-22T02:04:44.4044117Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4044201Z               "line": 176
2026-06-22T02:04:44.4044282Z             },
2026-06-22T02:04:44.4044367Z             {
2026-06-22T02:04:44.4044477Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4044560Z               "line": 22
2026-06-22T02:04:44.4044651Z             },
2026-06-22T02:04:44.4044732Z             {
2026-06-22T02:04:44.4044847Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4044932Z               "line": 65
2026-06-22T02:04:44.4045023Z             },
2026-06-22T02:04:44.4045109Z             {
2026-06-22T02:04:44.4045228Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4045309Z               "line": 76
2026-06-22T02:04:44.4045396Z             },
2026-06-22T02:04:44.4045472Z             {
2026-06-22T02:04:44.4045576Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4045672Z               "line": 151
2026-06-22T02:04:44.4045762Z             },
2026-06-22T02:04:44.4045843Z             {
2026-06-22T02:04:44.4045962Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4046049Z               "line": 210
2026-06-22T02:04:44.4046134Z             },
2026-06-22T02:04:44.4046215Z             {
2026-06-22T02:04:44.4046336Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4046425Z               "line": 259
2026-06-22T02:04:44.4046501Z             },
2026-06-22T02:04:44.4046587Z             {
2026-06-22T02:04:44.4046693Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4046792Z               "line": 281
2026-06-22T02:04:44.4046878Z             },
2026-06-22T02:04:44.4046960Z             {
2026-06-22T02:04:44.4047078Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4047163Z               "line": 294
2026-06-22T02:04:44.4047249Z             },
2026-06-22T02:04:44.4047330Z             {
2026-06-22T02:04:44.4047449Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.4047539Z               "line": 217
2026-06-22T02:04:44.4047621Z             },
2026-06-22T02:04:44.4047707Z             {
2026-06-22T02:04:44.4047807Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.4047897Z               "line": 233
2026-06-22T02:04:44.4047979Z             },
2026-06-22T02:04:44.4048065Z             {
2026-06-22T02:04:44.4048188Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.4048275Z               "line": 41
2026-06-22T02:04:44.4048360Z             },
2026-06-22T02:04:44.4048527Z             {
2026-06-22T02:04:44.4048651Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.4048737Z               "line": 222
2026-06-22T02:04:44.4048817Z             },
2026-06-22T02:04:44.4048900Z             {
2026-06-22T02:04:44.4049094Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:04:44.4049285Z               "line": 173
2026-06-22T02:04:44.4049366Z             },
2026-06-22T02:04:44.4049456Z             {
2026-06-22T02:04:44.4049560Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.4049645Z               "line": 354
2026-06-22T02:04:44.4049725Z             },
2026-06-22T02:04:44.4049806Z             {
2026-06-22T02:04:44.4049907Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.4049987Z               "line": 419
2026-06-22T02:04:44.4050072Z             },
2026-06-22T02:04:44.4050149Z             {
2026-06-22T02:04:44.4050278Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4050364Z               "line": 333
2026-06-22T02:04:44.4050445Z             },
2026-06-22T02:04:44.4050527Z             {
2026-06-22T02:04:44.4050631Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4050716Z               "line": 6320
2026-06-22T02:04:44.4050804Z             },
2026-06-22T02:04:44.4050889Z             {
2026-06-22T02:04:44.4050989Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4051079Z               "line": 6470
2026-06-22T02:04:44.4051161Z             },
2026-06-22T02:04:44.4051246Z             {
2026-06-22T02:04:44.4051355Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4051438Z               "line": 6646
2026-06-22T02:04:44.4051523Z             }
2026-06-22T02:04:44.4051608Z           ]
2026-06-22T02:04:44.4051684Z         },
2026-06-22T02:04:44.4051767Z         "int": {
2026-06-22T02:04:44.4051852Z           "complete": true,
2026-06-22T02:04:44.4051947Z           "evidence": [
2026-06-22T02:04:44.4052034Z             {
2026-06-22T02:04:44.4052167Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.4052251Z               "line": 713
2026-06-22T02:04:44.4052332Z             },
2026-06-22T02:04:44.4052418Z             {
2026-06-22T02:04:44.4052545Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:04:44.4052639Z               "line": 8
2026-06-22T02:04:44.4052726Z             },
2026-06-22T02:04:44.4052798Z             {
2026-06-22T02:04:44.4052921Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:04:44.4053002Z               "line": 49
2026-06-22T02:04:44.4053084Z             },
2026-06-22T02:04:44.4053165Z             {
2026-06-22T02:04:44.4053288Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4053380Z               "line": 778
2026-06-22T02:04:44.4053460Z             },
2026-06-22T02:04:44.4053546Z             {
2026-06-22T02:04:44.4053655Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4053747Z               "line": 1213
2026-06-22T02:04:44.4053837Z             },
2026-06-22T02:04:44.4053917Z             {
2026-06-22T02:04:44.4054043Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:04:44.4054127Z               "line": 17
2026-06-22T02:04:44.4054213Z             },
2026-06-22T02:04:44.4054300Z             {
2026-06-22T02:04:44.4054419Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:04:44.4054494Z               "line": 14
2026-06-22T02:04:44.4054581Z             }
2026-06-22T02:04:44.4054668Z           ]
2026-06-22T02:04:44.4054748Z         },
2026-06-22T02:04:44.4054832Z         "unit": {
2026-06-22T02:04:44.4054927Z           "complete": true,
2026-06-22T02:04:44.4055009Z           "evidence": [
2026-06-22T02:04:44.4055098Z             {
2026-06-22T02:04:44.4055211Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4055297Z               "line": 246
2026-06-22T02:04:44.4055379Z             },
2026-06-22T02:04:44.4055583Z             {
2026-06-22T02:04:44.4055703Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4055792Z               "line": 279
2026-06-22T02:04:44.4055873Z             },
2026-06-22T02:04:44.4055956Z             {
2026-06-22T02:04:44.4056079Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4056237Z               "line": 319
2026-06-22T02:04:44.4056327Z             },
2026-06-22T02:04:44.4056408Z             {
2026-06-22T02:04:44.4056527Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4056605Z               "line": 599
2026-06-22T02:04:44.4056694Z             },
2026-06-22T02:04:44.4056780Z             {
2026-06-22T02:04:44.4056896Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4056980Z               "line": 672
2026-06-22T02:04:44.4057066Z             },
2026-06-22T02:04:44.4057147Z             {
2026-06-22T02:04:44.4057263Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4057356Z               "line": 816
2026-06-22T02:04:44.4057438Z             },
2026-06-22T02:04:44.4057515Z             {
2026-06-22T02:04:44.4057624Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.4057714Z               "line": 595
2026-06-22T02:04:44.4057799Z             },
2026-06-22T02:04:44.4057890Z             {
2026-06-22T02:04:44.4058009Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:04:44.4058080Z               "line": 399
2026-06-22T02:04:44.4058157Z             },
2026-06-22T02:04:44.4058239Z             {
2026-06-22T02:04:44.4058347Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4058433Z               "line": 8976
2026-06-22T02:04:44.4058520Z             },
2026-06-22T02:04:44.4058606Z             {
2026-06-22T02:04:44.4058705Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4058787Z               "line": 9300
2026-06-22T02:04:44.4058868Z             },
2026-06-22T02:04:44.4059029Z             {
2026-06-22T02:04:44.4059140Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4059225Z               "line": 9717
2026-06-22T02:04:44.4059306Z             }
2026-06-22T02:04:44.4059392Z           ]
2026-06-22T02:04:44.4059475Z         }
2026-06-22T02:04:44.4059564Z       }
2026-06-22T02:04:44.4059649Z     },
2026-06-22T02:04:44.4059726Z     {
2026-06-22T02:04:44.4059822Z       "id": "REQ-SHELL-2",
2026-06-22T02:04:44.4061281Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-22T02:04:44.4061387Z       "requiredStages": [
2026-06-22T02:04:44.4061478Z         "impl",
2026-06-22T02:04:44.4061563Z         "unit",
2026-06-22T02:04:44.4061649Z         "int"
2026-06-22T02:04:44.4061735Z       ],
2026-06-22T02:04:44.4061821Z       "stages": {
2026-06-22T02:04:44.4061892Z         "doc": {
2026-06-22T02:04:44.4061983Z           "complete": false,
2026-06-22T02:04:44.4062069Z           "evidence": []
2026-06-22T02:04:44.4062159Z         },
2026-06-22T02:04:44.4062235Z         "impl": {
2026-06-22T02:04:44.4062327Z           "complete": true,
2026-06-22T02:04:44.4062412Z           "evidence": [
2026-06-22T02:04:44.4062488Z             {
2026-06-22T02:04:44.4062618Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.4062704Z               "line": 217
2026-06-22T02:04:44.4062793Z             },
2026-06-22T02:04:44.4062878Z             {
2026-06-22T02:04:44.4062997Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.4063086Z               "line": 403
2026-06-22T02:04:44.4063272Z             },
2026-06-22T02:04:44.4063358Z             {
2026-06-22T02:04:44.4063481Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:04:44.4063567Z               "line": 250
2026-06-22T02:04:44.4063644Z             },
2026-06-22T02:04:44.4063720Z             {
2026-06-22T02:04:44.4063930Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.4064021Z               "line": 403
2026-06-22T02:04:44.4064106Z             },
2026-06-22T02:04:44.4064187Z             {
2026-06-22T02:04:44.4064297Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4064382Z               "line": 30
2026-06-22T02:04:44.4064468Z             },
2026-06-22T02:04:44.4064550Z             {
2026-06-22T02:04:44.4064655Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4064740Z               "line": 409
2026-06-22T02:04:44.4064816Z             },
2026-06-22T02:04:44.4064903Z             {
2026-06-22T02:04:44.4065026Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4065102Z               "line": 445
2026-06-22T02:04:44.4065190Z             },
2026-06-22T02:04:44.4065261Z             {
2026-06-22T02:04:44.4065383Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4065463Z               "line": 660
2026-06-22T02:04:44.4065545Z             },
2026-06-22T02:04:44.4065625Z             {
2026-06-22T02:04:44.4065742Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.4065829Z               "line": 348
2026-06-22T02:04:44.4065915Z             },
2026-06-22T02:04:44.4065996Z             {
2026-06-22T02:04:44.4066119Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4066192Z               "line": 115
2026-06-22T02:04:44.4066282Z             },
2026-06-22T02:04:44.4066362Z             {
2026-06-22T02:04:44.4066482Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4066573Z               "line": 120
2026-06-22T02:04:44.4066658Z             },
2026-06-22T02:04:44.4066744Z             {
2026-06-22T02:04:44.4066855Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4066949Z               "line": 374
2026-06-22T02:04:44.4067025Z             },
2026-06-22T02:04:44.4067107Z             {
2026-06-22T02:04:44.4067221Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4067312Z               "line": 500
2026-06-22T02:04:44.4067393Z             },
2026-06-22T02:04:44.4067465Z             {
2026-06-22T02:04:44.4067573Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4067659Z               "line": 24
2026-06-22T02:04:44.4067742Z             },
2026-06-22T02:04:44.4067828Z             {
2026-06-22T02:04:44.4067946Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4068027Z               "line": 76
2026-06-22T02:04:44.4068109Z             },
2026-06-22T02:04:44.4068199Z             {
2026-06-22T02:04:44.4068317Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4068402Z               "line": 154
2026-06-22T02:04:44.4068475Z             },
2026-06-22T02:04:44.4068551Z             {
2026-06-22T02:04:44.4068669Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4068761Z               "line": 177
2026-06-22T02:04:44.4068847Z             },
2026-06-22T02:04:44.4068927Z             {
2026-06-22T02:04:44.4069132Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4069213Z               "line": 273
2026-06-22T02:04:44.4069299Z             },
2026-06-22T02:04:44.4069381Z             {
2026-06-22T02:04:44.4069490Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4069570Z               "line": 456
2026-06-22T02:04:44.4069657Z             },
2026-06-22T02:04:44.4069748Z             {
2026-06-22T02:04:44.4069862Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4070054Z               "line": 538
2026-06-22T02:04:44.4070138Z             },
2026-06-22T02:04:44.4070214Z             {
2026-06-22T02:04:44.4070345Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:04:44.4070425Z               "line": 27
2026-06-22T02:04:44.4070500Z             },
2026-06-22T02:04:44.4070671Z             {
2026-06-22T02:04:44.4070793Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:04:44.4070887Z               "line": 48
2026-06-22T02:04:44.4070964Z             },
2026-06-22T02:04:44.4071051Z             {
2026-06-22T02:04:44.4071174Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4071260Z               "line": 517
2026-06-22T02:04:44.4071347Z             },
2026-06-22T02:04:44.4071427Z             {
2026-06-22T02:04:44.4071536Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4071624Z               "line": 1921
2026-06-22T02:04:44.4071714Z             },
2026-06-22T02:04:44.4071794Z             {
2026-06-22T02:04:44.4071904Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4071990Z               "line": 6334
2026-06-22T02:04:44.4072076Z             },
2026-06-22T02:04:44.4072161Z             {
2026-06-22T02:04:44.4072258Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4072352Z               "line": 6395
2026-06-22T02:04:44.4072428Z             },
2026-06-22T02:04:44.4072509Z             {
2026-06-22T02:04:44.4072615Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4072705Z               "line": 6423
2026-06-22T02:04:44.4072786Z             },
2026-06-22T02:04:44.4072868Z             {
2026-06-22T02:04:44.4072963Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4073038Z               "line": 6477
2026-06-22T02:04:44.4073129Z             },
2026-06-22T02:04:44.4073217Z             {
2026-06-22T02:04:44.4073315Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4073395Z               "line": 6732
2026-06-22T02:04:44.4073486Z             },
2026-06-22T02:04:44.4073567Z             {
2026-06-22T02:04:44.4073660Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4073755Z               "line": 6792
2026-06-22T02:04:44.4073832Z             },
2026-06-22T02:04:44.4073904Z             {
2026-06-22T02:04:44.4074013Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.4074093Z               "line": 298
2026-06-22T02:04:44.4074180Z             },
2026-06-22T02:04:44.4074266Z             {
2026-06-22T02:04:44.4074380Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.4074476Z               "line": 339
2026-06-22T02:04:44.4074552Z             }
2026-06-22T02:04:44.4074643Z           ]
2026-06-22T02:04:44.4074727Z         },
2026-06-22T02:04:44.4074815Z         "int": {
2026-06-22T02:04:44.4074914Z           "complete": true,
2026-06-22T02:04:44.4074995Z           "evidence": [
2026-06-22T02:04:44.4075086Z             {
2026-06-22T02:04:44.4075210Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.4075300Z               "line": 706
2026-06-22T02:04:44.4075381Z             },
2026-06-22T02:04:44.4075468Z             {
2026-06-22T02:04:44.4075591Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4075677Z               "line": 778
2026-06-22T02:04:44.4075759Z             },
2026-06-22T02:04:44.4075840Z             {
2026-06-22T02:04:44.4075971Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4076057Z               "line": 1213
2026-06-22T02:04:44.4076143Z             },
2026-06-22T02:04:44.4076232Z             {
2026-06-22T02:04:44.4076360Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T02:04:44.4076451Z               "line": 18
2026-06-22T02:04:44.4076533Z             }
2026-06-22T02:04:44.4076617Z           ]
2026-06-22T02:04:44.4076694Z         },
2026-06-22T02:04:44.4076781Z         "unit": {
2026-06-22T02:04:44.4076862Z           "complete": true,
2026-06-22T02:04:44.4077028Z           "evidence": [
2026-06-22T02:04:44.4077114Z             {
2026-06-22T02:04:44.4077224Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4077309Z               "line": 744
2026-06-22T02:04:44.4077391Z             },
2026-06-22T02:04:44.4077476Z             {
2026-06-22T02:04:44.4077677Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:04:44.4077767Z               "line": 796
2026-06-22T02:04:44.4077853Z             },
2026-06-22T02:04:44.4077924Z             {
2026-06-22T02:04:44.4078044Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4078129Z               "line": 705
2026-06-22T02:04:44.4078215Z             },
2026-06-22T02:04:44.4078302Z             {
2026-06-22T02:04:44.4078411Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4078506Z               "line": 754
2026-06-22T02:04:44.4078588Z             },
2026-06-22T02:04:44.4078674Z             {
2026-06-22T02:04:44.4078791Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4078877Z               "line": 778
2026-06-22T02:04:44.4079030Z             },
2026-06-22T02:04:44.4079111Z             {
2026-06-22T02:04:44.4079234Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4079326Z               "line": 603
2026-06-22T02:04:44.4079440Z             },
2026-06-22T02:04:44.4079530Z             {
2026-06-22T02:04:44.4079646Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4079731Z               "line": 624
2026-06-22T02:04:44.4079811Z             },
2026-06-22T02:04:44.4079893Z             {
2026-06-22T02:04:44.4080007Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4080088Z               "line": 660
2026-06-22T02:04:44.4080179Z             },
2026-06-22T02:04:44.4080261Z             {
2026-06-22T02:04:44.4080393Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4080484Z               "line": 714
2026-06-22T02:04:44.4080566Z             },
2026-06-22T02:04:44.4080646Z             {
2026-06-22T02:04:44.4080769Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4080861Z               "line": 732
2026-06-22T02:04:44.4080943Z             },
2026-06-22T02:04:44.4081041Z             {
2026-06-22T02:04:44.4081154Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4081241Z               "line": 766
2026-06-22T02:04:44.4081320Z             },
2026-06-22T02:04:44.4081410Z             {
2026-06-22T02:04:44.4081524Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:04:44.4081616Z               "line": 841
2026-06-22T02:04:44.4081701Z             },
2026-06-22T02:04:44.4081781Z             {
2026-06-22T02:04:44.4081902Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:04:44.4081992Z               "line": 85
2026-06-22T02:04:44.4082082Z             },
2026-06-22T02:04:44.4082169Z             {
2026-06-22T02:04:44.4082274Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4082368Z               "line": 8044
2026-06-22T02:04:44.4082455Z             },
2026-06-22T02:04:44.4082541Z             {
2026-06-22T02:04:44.4082636Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4082731Z               "line": 9054
2026-06-22T02:04:44.4082813Z             },
2026-06-22T02:04:44.4082898Z             {
2026-06-22T02:04:44.4083003Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4083094Z               "line": 9124
2026-06-22T02:04:44.4083180Z             },
2026-06-22T02:04:44.4083265Z             {
2026-06-22T02:04:44.4083365Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4083462Z               "line": 9162
2026-06-22T02:04:44.4083542Z             }
2026-06-22T02:04:44.4083627Z           ]
2026-06-22T02:04:44.4083709Z         }
2026-06-22T02:04:44.4083801Z       }
2026-06-22T02:04:44.4083880Z     },
2026-06-22T02:04:44.4084060Z     {
2026-06-22T02:04:44.4084160Z       "id": "REQ-SHELL-3",
2026-06-22T02:04:44.4085932Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-22T02:04:44.4086137Z       "requiredStages": [
2026-06-22T02:04:44.4086228Z         "impl",
2026-06-22T02:04:44.4086300Z         "unit",
2026-06-22T02:04:44.4086386Z         "int"
2026-06-22T02:04:44.4086470Z       ],
2026-06-22T02:04:44.4086551Z       "stages": {
2026-06-22T02:04:44.4086641Z         "doc": {
2026-06-22T02:04:44.4086741Z           "complete": false,
2026-06-22T02:04:44.4086835Z           "evidence": []
2026-06-22T02:04:44.4086915Z         },
2026-06-22T02:04:44.4086997Z         "impl": {
2026-06-22T02:04:44.4087084Z           "complete": true,
2026-06-22T02:04:44.4087173Z           "evidence": [
2026-06-22T02:04:44.4087258Z             {
2026-06-22T02:04:44.4087388Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.4087478Z               "line": 229
2026-06-22T02:04:44.4087564Z             },
2026-06-22T02:04:44.4087655Z             {
2026-06-22T02:04:44.4087774Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4087864Z               "line": 36
2026-06-22T02:04:44.4087946Z             },
2026-06-22T02:04:44.4088027Z             {
2026-06-22T02:04:44.4088155Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4088232Z               "line": 137
2026-06-22T02:04:44.4088318Z             },
2026-06-22T02:04:44.4088404Z             {
2026-06-22T02:04:44.4088513Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4088595Z               "line": 153
2026-06-22T02:04:44.4088675Z             },
2026-06-22T02:04:44.4088761Z             {
2026-06-22T02:04:44.4088872Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4089056Z               "line": 165
2026-06-22T02:04:44.4089138Z             },
2026-06-22T02:04:44.4089225Z             {
2026-06-22T02:04:44.4089338Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4089423Z               "line": 242
2026-06-22T02:04:44.4089508Z             },
2026-06-22T02:04:44.4089590Z             {
2026-06-22T02:04:44.4089709Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4089794Z               "line": 267
2026-06-22T02:04:44.4089871Z             },
2026-06-22T02:04:44.4089952Z             {
2026-06-22T02:04:44.4090061Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4090148Z               "line": 293
2026-06-22T02:04:44.4090230Z             },
2026-06-22T02:04:44.4090315Z             {
2026-06-22T02:04:44.4090429Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:04:44.4090511Z               "line": 51
2026-06-22T02:04:44.4090591Z             },
2026-06-22T02:04:44.4090672Z             {
2026-06-22T02:04:44.4090792Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4090878Z               "line": 333
2026-06-22T02:04:44.4090958Z             },
2026-06-22T02:04:44.4091039Z             {
2026-06-22T02:04:44.4091159Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4091249Z               "line": 373
2026-06-22T02:04:44.4091325Z             },
2026-06-22T02:04:44.4091411Z             {
2026-06-22T02:04:44.4091512Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4091596Z               "line": 602
2026-06-22T02:04:44.4091672Z             },
2026-06-22T02:04:44.4091862Z             {
2026-06-22T02:04:44.4091990Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4092080Z               "line": 132
2026-06-22T02:04:44.4092162Z             },
2026-06-22T02:04:44.4092247Z             {
2026-06-22T02:04:44.4092366Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4092548Z               "line": 448
2026-06-22T02:04:44.4092628Z             },
2026-06-22T02:04:44.4092710Z             {
2026-06-22T02:04:44.4092824Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:04:44.4092909Z               "line": 74
2026-06-22T02:04:44.4092990Z             },
2026-06-22T02:04:44.4093078Z             {
2026-06-22T02:04:44.4093196Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4093291Z               "line": 605
2026-06-22T02:04:44.4093378Z             },
2026-06-22T02:04:44.4093453Z             {
2026-06-22T02:04:44.4093572Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4093659Z               "line": 396
2026-06-22T02:04:44.4093745Z             },
2026-06-22T02:04:44.4093829Z             {
2026-06-22T02:04:44.4093935Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4094022Z               "line": 6518
2026-06-22T02:04:44.4094106Z             }
2026-06-22T02:04:44.4094192Z           ]
2026-06-22T02:04:44.4094279Z         },
2026-06-22T02:04:44.4094366Z         "int": {
2026-06-22T02:04:44.4094454Z           "complete": true,
2026-06-22T02:04:44.4094553Z           "evidence": [
2026-06-22T02:04:44.4094634Z             {
2026-06-22T02:04:44.4094748Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4094842Z               "line": 1262
2026-06-22T02:04:44.4094923Z             },
2026-06-22T02:04:44.4095000Z             {
2026-06-22T02:04:44.4095114Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-22T02:04:44.4095190Z               "line": 17
2026-06-22T02:04:44.4095281Z             }
2026-06-22T02:04:44.4095363Z           ]
2026-06-22T02:04:44.4095452Z         },
2026-06-22T02:04:44.4095533Z         "unit": {
2026-06-22T02:04:44.4095630Z           "complete": true,
2026-06-22T02:04:44.4095720Z           "evidence": [
2026-06-22T02:04:44.4095800Z             {
2026-06-22T02:04:44.4095925Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4096006Z               "line": 311
2026-06-22T02:04:44.4096092Z             },
2026-06-22T02:04:44.4096172Z             {
2026-06-22T02:04:44.4096293Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4096382Z               "line": 325
2026-06-22T02:04:44.4096463Z             },
2026-06-22T02:04:44.4096550Z             {
2026-06-22T02:04:44.4096669Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4096759Z               "line": 343
2026-06-22T02:04:44.4096841Z             },
2026-06-22T02:04:44.4096927Z             {
2026-06-22T02:04:44.4097040Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4097134Z               "line": 364
2026-06-22T02:04:44.4097216Z             },
2026-06-22T02:04:44.4097296Z             {
2026-06-22T02:04:44.4097418Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:04:44.4097499Z               "line": 376
2026-06-22T02:04:44.4097581Z             },
2026-06-22T02:04:44.4097667Z             {
2026-06-22T02:04:44.4097775Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4097863Z               "line": 897
2026-06-22T02:04:44.4097948Z             },
2026-06-22T02:04:44.4098033Z             {
2026-06-22T02:04:44.4098143Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4098225Z               "line": 957
2026-06-22T02:04:44.4098306Z             },
2026-06-22T02:04:44.4098391Z             {
2026-06-22T02:04:44.4098511Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:04:44.4098601Z               "line": 338
2026-06-22T02:04:44.4098768Z             },
2026-06-22T02:04:44.4098850Z             {
2026-06-22T02:04:44.4099044Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.4099141Z               "line": 769
2026-06-22T02:04:44.4099221Z             },
2026-06-22T02:04:44.4099307Z             {
2026-06-22T02:04:44.4099499Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4099583Z               "line": 8836
2026-06-22T02:04:44.4099665Z             }
2026-06-22T02:04:44.4099751Z           ]
2026-06-22T02:04:44.4099832Z         }
2026-06-22T02:04:44.4099916Z       }
2026-06-22T02:04:44.4100001Z     },
2026-06-22T02:04:44.4100083Z     {
2026-06-22T02:04:44.4100174Z       "id": "REQ-SHELL-4",
2026-06-22T02:04:44.4101938Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-22T02:04:44.4102049Z       "requiredStages": [
2026-06-22T02:04:44.4102128Z         "doc",
2026-06-22T02:04:44.4102204Z         "impl",
2026-06-22T02:04:44.4102284Z         "unit",
2026-06-22T02:04:44.4102375Z         "int"
2026-06-22T02:04:44.4102460Z       ],
2026-06-22T02:04:44.4102550Z       "stages": {
2026-06-22T02:04:44.4102631Z         "doc": {
2026-06-22T02:04:44.4102726Z           "complete": true,
2026-06-22T02:04:44.4102817Z           "evidence": [
2026-06-22T02:04:44.4102902Z             {
2026-06-22T02:04:44.4102998Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.4103084Z               "line": 281
2026-06-22T02:04:44.4103169Z             },
2026-06-22T02:04:44.4103260Z             {
2026-06-22T02:04:44.4103488Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T02:04:44.4103575Z               "line": 88
2026-06-22T02:04:44.4106355Z             }
2026-06-22T02:04:44.4106456Z           ]
2026-06-22T02:04:44.4106552Z         },
2026-06-22T02:04:44.4106642Z         "impl": {
2026-06-22T02:04:44.4106733Z           "complete": true,
2026-06-22T02:04:44.4106820Z           "evidence": [
2026-06-22T02:04:44.4106904Z             {
2026-06-22T02:04:44.4107033Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.4107120Z               "line": 243
2026-06-22T02:04:44.4107205Z             },
2026-06-22T02:04:44.4107295Z             {
2026-06-22T02:04:44.4107420Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:04:44.4107502Z               "line": 61
2026-06-22T02:04:44.4107586Z             },
2026-06-22T02:04:44.4107666Z             {
2026-06-22T02:04:44.4107790Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4107879Z               "line": 218
2026-06-22T02:04:44.4107988Z             },
2026-06-22T02:04:44.4108064Z             {
2026-06-22T02:04:44.4108180Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4108255Z               "line": 245
2026-06-22T02:04:44.4108340Z             },
2026-06-22T02:04:44.4108418Z             {
2026-06-22T02:04:44.4108532Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4108636Z               "line": 566
2026-06-22T02:04:44.4108723Z             },
2026-06-22T02:04:44.4108804Z             {
2026-06-22T02:04:44.4108904Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4109180Z               "line": 1141
2026-06-22T02:04:44.4109266Z             },
2026-06-22T02:04:44.4109338Z             {
2026-06-22T02:04:44.4109481Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4109557Z               "line": 1153
2026-06-22T02:04:44.4109776Z             },
2026-06-22T02:04:44.4109862Z             {
2026-06-22T02:04:44.4109977Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4110063Z               "line": 1194
2026-06-22T02:04:44.4110148Z             },
2026-06-22T02:04:44.4110350Z             {
2026-06-22T02:04:44.4110472Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4110557Z               "line": 456
2026-06-22T02:04:44.4110638Z             },
2026-06-22T02:04:44.4110720Z             {
2026-06-22T02:04:44.4110843Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4110924Z               "line": 44
2026-06-22T02:04:44.4111006Z             },
2026-06-22T02:04:44.4111092Z             {
2026-06-22T02:04:44.4111205Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4111293Z               "line": 208
2026-06-22T02:04:44.4111378Z             },
2026-06-22T02:04:44.4111454Z             {
2026-06-22T02:04:44.4111564Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4111650Z               "line": 227
2026-06-22T02:04:44.4111735Z             },
2026-06-22T02:04:44.4111811Z             {
2026-06-22T02:04:44.4111932Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4112017Z               "line": 253
2026-06-22T02:04:44.4112107Z             },
2026-06-22T02:04:44.4112183Z             {
2026-06-22T02:04:44.4112299Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4112374Z               "line": 272
2026-06-22T02:04:44.4112460Z             },
2026-06-22T02:04:44.4112551Z             {
2026-06-22T02:04:44.4112661Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4112749Z               "line": 392
2026-06-22T02:04:44.4112835Z             },
2026-06-22T02:04:44.4112916Z             {
2026-06-22T02:04:44.4113029Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4113114Z               "line": 421
2026-06-22T02:04:44.4113196Z             },
2026-06-22T02:04:44.4113282Z             {
2026-06-22T02:04:44.4113405Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4113491Z               "line": 439
2026-06-22T02:04:44.4113578Z             },
2026-06-22T02:04:44.4113659Z             {
2026-06-22T02:04:44.4113782Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4113869Z               "line": 458
2026-06-22T02:04:44.4113940Z             },
2026-06-22T02:04:44.4114020Z             {
2026-06-22T02:04:44.4114145Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4114240Z               "line": 486
2026-06-22T02:04:44.4114321Z             },
2026-06-22T02:04:44.4114406Z             {
2026-06-22T02:04:44.4114531Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4114616Z               "line": 624
2026-06-22T02:04:44.4114702Z             },
2026-06-22T02:04:44.4114789Z             {
2026-06-22T02:04:44.4114912Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4114998Z               "line": 829
2026-06-22T02:04:44.4115070Z             },
2026-06-22T02:04:44.4115157Z             {
2026-06-22T02:04:44.4115269Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4115365Z               "line": 435
2026-06-22T02:04:44.4115447Z             },
2026-06-22T02:04:44.4115528Z             {
2026-06-22T02:04:44.4115641Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4115726Z               "line": 6574
2026-06-22T02:04:44.4115812Z             }
2026-06-22T02:04:44.4115892Z           ]
2026-06-22T02:04:44.4115976Z         },
2026-06-22T02:04:44.4116058Z         "int": {
2026-06-22T02:04:44.4116144Z           "complete": true,
2026-06-22T02:04:44.4116235Z           "evidence": [
2026-06-22T02:04:44.4116320Z             {
2026-06-22T02:04:44.4116440Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-22T02:04:44.4116596Z               "line": 18
2026-06-22T02:04:44.4116687Z             }
2026-06-22T02:04:44.4116765Z           ]
2026-06-22T02:04:44.4116840Z         },
2026-06-22T02:04:44.4116920Z         "unit": {
2026-06-22T02:04:44.4117016Z           "complete": true,
2026-06-22T02:04:44.4117169Z           "evidence": [
2026-06-22T02:04:44.4117254Z             {
2026-06-22T02:04:44.4117380Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4117465Z               "line": 1391
2026-06-22T02:04:44.4117546Z             },
2026-06-22T02:04:44.4117627Z             {
2026-06-22T02:04:44.4117742Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4117826Z               "line": 1420
2026-06-22T02:04:44.4117913Z             },
2026-06-22T02:04:44.4117995Z             {
2026-06-22T02:04:44.4118113Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4118193Z               "line": 504
2026-06-22T02:04:44.4118283Z             },
2026-06-22T02:04:44.4118365Z             {
2026-06-22T02:04:44.4118491Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4118572Z               "line": 514
2026-06-22T02:04:44.4118658Z             },
2026-06-22T02:04:44.4118735Z             {
2026-06-22T02:04:44.4118858Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4119016Z               "line": 531
2026-06-22T02:04:44.4119097Z             },
2026-06-22T02:04:44.4119177Z             {
2026-06-22T02:04:44.4119293Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4119383Z               "line": 543
2026-06-22T02:04:44.4119468Z             },
2026-06-22T02:04:44.4119564Z             {
2026-06-22T02:04:44.4119679Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:04:44.4119980Z               "line": 555
2026-06-22T02:04:44.4120174Z             },
2026-06-22T02:04:44.4120341Z             {
2026-06-22T02:04:44.4120552Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4120838Z               "line": 1145
2026-06-22T02:04:44.4121013Z             },
2026-06-22T02:04:44.4121179Z             {
2026-06-22T02:04:44.4121370Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.4121605Z               "line": 776
2026-06-22T02:04:44.4121794Z             }
2026-06-22T02:04:44.4121962Z           ]
2026-06-22T02:04:44.4122114Z         }
2026-06-22T02:04:44.4122272Z       }
2026-06-22T02:04:44.4122414Z     },
2026-06-22T02:04:44.4122572Z     {
2026-06-22T02:04:44.4122738Z       "id": "REQ-SHELL-5",
2026-06-22T02:04:44.4124060Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-22T02:04:44.4125229Z       "requiredStages": [
2026-06-22T02:04:44.4125440Z         "doc",
2026-06-22T02:04:44.4125615Z         "impl",
2026-06-22T02:04:44.4125783Z         "unit",
2026-06-22T02:04:44.4125945Z         "int"
2026-06-22T02:04:44.4126116Z       ],
2026-06-22T02:04:44.4126306Z       "stages": {
2026-06-22T02:04:44.4126475Z         "doc": {
2026-06-22T02:04:44.4126670Z           "complete": true,
2026-06-22T02:04:44.4126870Z           "evidence": [
2026-06-22T02:04:44.4127110Z             {
2026-06-22T02:04:44.4127286Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.4127533Z               "line": 284
2026-06-22T02:04:44.4127724Z             }
2026-06-22T02:04:44.4127881Z           ]
2026-06-22T02:04:44.4128048Z         },
2026-06-22T02:04:44.4128221Z         "impl": {
2026-06-22T02:04:44.4128396Z           "complete": true,
2026-06-22T02:04:44.4128598Z           "evidence": [
2026-06-22T02:04:44.4128787Z             {
2026-06-22T02:04:44.4129223Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:04:44.4129490Z               "line": 260
2026-06-22T02:04:44.4129676Z             }
2026-06-22T02:04:44.4129834Z           ]
2026-06-22T02:04:44.4129991Z         },
2026-06-22T02:04:44.4130153Z         "int": {
2026-06-22T02:04:44.4130329Z           "complete": true,
2026-06-22T02:04:44.4130620Z           "evidence": [
2026-06-22T02:04:44.4130807Z             {
2026-06-22T02:04:44.4131001Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4131258Z               "line": 827
2026-06-22T02:04:44.4131441Z             },
2026-06-22T02:04:44.4131606Z             {
2026-06-22T02:04:44.4131802Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4132040Z               "line": 1290
2026-06-22T02:04:44.4132217Z             },
2026-06-22T02:04:44.4132384Z             {
2026-06-22T02:04:44.4132597Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-22T02:04:44.4132870Z               "line": 23
2026-06-22T02:04:44.4133052Z             }
2026-06-22T02:04:44.4133208Z           ]
2026-06-22T02:04:44.4133409Z         },
2026-06-22T02:04:44.4133570Z         "unit": {
2026-06-22T02:04:44.4133748Z           "complete": true,
2026-06-22T02:04:44.4133946Z           "evidence": [
2026-06-22T02:04:44.4134131Z             {
2026-06-22T02:04:44.4134335Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:04:44.4134582Z               "line": 803
2026-06-22T02:04:44.4134764Z             }
2026-06-22T02:04:44.4134916Z           ]
2026-06-22T02:04:44.4135070Z         }
2026-06-22T02:04:44.4135226Z       }
2026-06-22T02:04:44.4135380Z     },
2026-06-22T02:04:44.4135526Z     {
2026-06-22T02:04:44.4135694Z       "id": "REQ-START-1",
2026-06-22T02:04:44.4135976Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-22T02:04:44.4136310Z       "requiredStages": [
2026-06-22T02:04:44.4136500Z         "impl",
2026-06-22T02:04:44.4136672Z         "unit"
2026-06-22T02:04:44.4136837Z       ],
2026-06-22T02:04:44.4136993Z       "stages": {
2026-06-22T02:04:44.4137159Z         "doc": {
2026-06-22T02:04:44.4137327Z           "complete": false,
2026-06-22T02:04:44.4137527Z           "evidence": []
2026-06-22T02:04:44.4137703Z         },
2026-06-22T02:04:44.4137870Z         "impl": {
2026-06-22T02:04:44.4138050Z           "complete": true,
2026-06-22T02:04:44.4138247Z           "evidence": [
2026-06-22T02:04:44.4138418Z             {
2026-06-22T02:04:44.4138609Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:04:44.4138843Z               "line": 16
2026-06-22T02:04:44.4139125Z             }
2026-06-22T02:04:44.4139280Z           ]
2026-06-22T02:04:44.4139442Z         },
2026-06-22T02:04:44.4139598Z         "int": {
2026-06-22T02:04:44.4139774Z           "complete": false,
2026-06-22T02:04:44.4139964Z           "evidence": []
2026-06-22T02:04:44.4140156Z         },
2026-06-22T02:04:44.4140317Z         "unit": {
2026-06-22T02:04:44.4140489Z           "complete": true,
2026-06-22T02:04:44.4140689Z           "evidence": [
2026-06-22T02:04:44.4140870Z             {
2026-06-22T02:04:44.4141062Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:04:44.4141300Z               "line": 48
2026-06-22T02:04:44.4141471Z             },
2026-06-22T02:04:44.4141638Z             {
2026-06-22T02:04:44.4141833Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:04:44.4142054Z               "line": 63
2026-06-22T02:04:44.4142233Z             }
2026-06-22T02:04:44.4142381Z           ]
2026-06-22T02:04:44.4142543Z         }
2026-06-22T02:04:44.4142701Z       }
2026-06-22T02:04:44.4142852Z     },
2026-06-22T02:04:44.4143007Z     {
2026-06-22T02:04:44.4143172Z       "id": "REQ-START-2",
2026-06-22T02:04:44.4143420Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-22T02:04:44.4143688Z       "requiredStages": [
2026-06-22T02:04:44.4143883Z         "impl",
2026-06-22T02:04:44.4144049Z         "unit",
2026-06-22T02:04:44.4144341Z         "int"
2026-06-22T02:04:44.4144501Z       ],
2026-06-22T02:04:44.4144663Z       "stages": {
2026-06-22T02:04:44.4144837Z         "doc": {
2026-06-22T02:04:44.4145010Z           "complete": false,
2026-06-22T02:04:44.4145205Z           "evidence": []
2026-06-22T02:04:44.4145405Z         },
2026-06-22T02:04:44.4145663Z         "impl": {
2026-06-22T02:04:44.4145845Z           "complete": true,
2026-06-22T02:04:44.4146039Z           "evidence": [
2026-06-22T02:04:44.4146221Z             {
2026-06-22T02:04:44.4146420Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4146659Z               "line": 16
2026-06-22T02:04:44.4146842Z             },
2026-06-22T02:04:44.4147003Z             {
2026-06-22T02:04:44.4147208Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4147445Z               "line": 115
2026-06-22T02:04:44.4147634Z             },
2026-06-22T02:04:44.4147800Z             {
2026-06-22T02:04:44.4147981Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4148221Z               "line": 300
2026-06-22T02:04:44.4148397Z             }
2026-06-22T02:04:44.4148559Z           ]
2026-06-22T02:04:44.4148721Z         },
2026-06-22T02:04:44.4148878Z         "int": {
2026-06-22T02:04:44.4149145Z           "complete": true,
2026-06-22T02:04:44.4149346Z           "evidence": [
2026-06-22T02:04:44.4149530Z             {
2026-06-22T02:04:44.4149728Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.4149973Z               "line": 186
2026-06-22T02:04:44.4150148Z             }
2026-06-22T02:04:44.4150320Z           ]
2026-06-22T02:04:44.4150491Z         },
2026-06-22T02:04:44.4150649Z         "unit": {
2026-06-22T02:04:44.4150820Z           "complete": true,
2026-06-22T02:04:44.4151016Z           "evidence": [
2026-06-22T02:04:44.4151201Z             {
2026-06-22T02:04:44.4151392Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4151622Z               "line": 590
2026-06-22T02:04:44.4151807Z             },
2026-06-22T02:04:44.4151965Z             {
2026-06-22T02:04:44.4152169Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4152412Z               "line": 623
2026-06-22T02:04:44.4152600Z             }
2026-06-22T02:04:44.4152769Z           ]
2026-06-22T02:04:44.4152932Z         }
2026-06-22T02:04:44.4153083Z       }
2026-06-22T02:04:44.4153242Z     },
2026-06-22T02:04:44.4153393Z     {
2026-06-22T02:04:44.4153567Z       "id": "REQ-START-3",
2026-06-22T02:04:44.4153843Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-22T02:04:44.4154158Z       "requiredStages": [
2026-06-22T02:04:44.4154352Z         "impl",
2026-06-22T02:04:44.4154525Z         "unit",
2026-06-22T02:04:44.4154695Z         "int"
2026-06-22T02:04:44.4154859Z       ],
2026-06-22T02:04:44.4155024Z       "stages": {
2026-06-22T02:04:44.4155195Z         "doc": {
2026-06-22T02:04:44.4155388Z           "complete": false,
2026-06-22T02:04:44.4155584Z           "evidence": []
2026-06-22T02:04:44.4155770Z         },
2026-06-22T02:04:44.4155932Z         "impl": {
2026-06-22T02:04:44.4156114Z           "complete": true,
2026-06-22T02:04:44.4156313Z           "evidence": [
2026-06-22T02:04:44.4156490Z             {
2026-06-22T02:04:44.4156690Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.4156952Z               "line": 23
2026-06-22T02:04:44.4157134Z             },
2026-06-22T02:04:44.4157300Z             {
2026-06-22T02:04:44.4157491Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.4157736Z               "line": 205
2026-06-22T02:04:44.4157928Z             },
2026-06-22T02:04:44.4158085Z             {
2026-06-22T02:04:44.4158274Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.4158513Z               "line": 221
2026-06-22T02:04:44.4158695Z             },
2026-06-22T02:04:44.4158851Z             {
2026-06-22T02:04:44.4159128Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4159495Z               "line": 17
2026-06-22T02:04:44.4159677Z             },
2026-06-22T02:04:44.4159843Z             {
2026-06-22T02:04:44.4160039Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4160274Z               "line": 35
2026-06-22T02:04:44.4160452Z             },
2026-06-22T02:04:44.4160732Z             {
2026-06-22T02:04:44.4160922Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4161165Z               "line": 116
2026-06-22T02:04:44.4161338Z             }
2026-06-22T02:04:44.4161494Z           ]
2026-06-22T02:04:44.4161642Z         },
2026-06-22T02:04:44.4161800Z         "int": {
2026-06-22T02:04:44.4161971Z           "complete": true,
2026-06-22T02:04:44.4162177Z           "evidence": [
2026-06-22T02:04:44.4162358Z             {
2026-06-22T02:04:44.4162559Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:04:44.4162803Z               "line": 488
2026-06-22T02:04:44.4162982Z             }
2026-06-22T02:04:44.4163155Z           ]
2026-06-22T02:04:44.4163324Z         },
2026-06-22T02:04:44.4163492Z         "unit": {
2026-06-22T02:04:44.4163672Z           "complete": true,
2026-06-22T02:04:44.4163868Z           "evidence": [
2026-06-22T02:04:44.4164044Z             {
2026-06-22T02:04:44.4164236Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.4164489Z               "line": 381
2026-06-22T02:04:44.4164664Z             },
2026-06-22T02:04:44.4164827Z             {
2026-06-22T02:04:44.4165018Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.4165255Z               "line": 402
2026-06-22T02:04:44.4165433Z             },
2026-06-22T02:04:44.4165598Z             {
2026-06-22T02:04:44.4165788Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:04:44.4166020Z               "line": 412
2026-06-22T02:04:44.4166215Z             },
2026-06-22T02:04:44.4166383Z             {
2026-06-22T02:04:44.4166573Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4166821Z               "line": 591
2026-06-22T02:04:44.4167013Z             },
2026-06-22T02:04:44.4167173Z             {
2026-06-22T02:04:44.4167365Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4167604Z               "line": 624
2026-06-22T02:04:44.4167789Z             },
2026-06-22T02:04:44.4167953Z             {
2026-06-22T02:04:44.4168142Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4168384Z               "line": 657
2026-06-22T02:04:44.4168575Z             }
2026-06-22T02:04:44.4168720Z           ]
2026-06-22T02:04:44.4168892Z         }
2026-06-22T02:04:44.4169134Z       }
2026-06-22T02:04:44.4169288Z     },
2026-06-22T02:04:44.4169459Z     {
2026-06-22T02:04:44.4169622Z       "id": "REQ-START-4",
2026-06-22T02:04:44.4169861Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-22T02:04:44.4170132Z       "requiredStages": [
2026-06-22T02:04:44.4170322Z         "impl",
2026-06-22T02:04:44.4170500Z         "unit"
2026-06-22T02:04:44.4178053Z       ],
2026-06-22T02:04:44.4178254Z       "stages": {
2026-06-22T02:04:44.4178450Z         "doc": {
2026-06-22T02:04:44.4178654Z           "complete": false,
2026-06-22T02:04:44.4178861Z           "evidence": []
2026-06-22T02:04:44.4179125Z         },
2026-06-22T02:04:44.4179304Z         "impl": {
2026-06-22T02:04:44.4179524Z           "complete": true,
2026-06-22T02:04:44.4179723Z           "evidence": [
2026-06-22T02:04:44.4179901Z             {
2026-06-22T02:04:44.4180116Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4180377Z               "line": 585
2026-06-22T02:04:44.4180568Z             }
2026-06-22T02:04:44.4180731Z           ]
2026-06-22T02:04:44.4180887Z         },
2026-06-22T02:04:44.4181055Z         "int": {
2026-06-22T02:04:44.4181235Z           "complete": false,
2026-06-22T02:04:44.4181432Z           "evidence": []
2026-06-22T02:04:44.4181601Z         },
2026-06-22T02:04:44.4181763Z         "unit": {
2026-06-22T02:04:44.4182106Z           "complete": true,
2026-06-22T02:04:44.4182314Z           "evidence": [
2026-06-22T02:04:44.4182486Z             {
2026-06-22T02:04:44.4182682Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4182930Z               "line": 1026
2026-06-22T02:04:44.4183111Z             }
2026-06-22T02:04:44.4183373Z           ]
2026-06-22T02:04:44.4183525Z         }
2026-06-22T02:04:44.4183679Z       }
2026-06-22T02:04:44.4183840Z     },
2026-06-22T02:04:44.4183994Z     {
2026-06-22T02:04:44.4184165Z       "id": "REQ-START-5",
2026-06-22T02:04:44.4187159Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-22T02:04:44.4189776Z       "requiredStages": [
2026-06-22T02:04:44.4189979Z         "doc",
2026-06-22T02:04:44.4190156Z         "impl",
2026-06-22T02:04:44.4190323Z         "unit",
2026-06-22T02:04:44.4190494Z         "int"
2026-06-22T02:04:44.4190657Z       ],
2026-06-22T02:04:44.4190818Z       "stages": {
2026-06-22T02:04:44.4190991Z         "doc": {
2026-06-22T02:04:44.4191171Z           "complete": true,
2026-06-22T02:04:44.4191372Z           "evidence": [
2026-06-22T02:04:44.4191562Z             {
2026-06-22T02:04:44.4191752Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.4191974Z               "line": 176
2026-06-22T02:04:44.4192166Z             },
2026-06-22T02:04:44.4192328Z             {
2026-06-22T02:04:44.4192546Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-22T02:04:44.4192812Z               "line": 28
2026-06-22T02:04:44.4192999Z             }
2026-06-22T02:04:44.4193165Z           ]
2026-06-22T02:04:44.4193318Z         },
2026-06-22T02:04:44.4193485Z         "impl": {
2026-06-22T02:04:44.4193671Z           "complete": true,
2026-06-22T02:04:44.4193853Z           "evidence": [
2026-06-22T02:04:44.4194038Z             {
2026-06-22T02:04:44.4194229Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.4194478Z               "line": 26
2026-06-22T02:04:44.4194653Z             },
2026-06-22T02:04:44.4194822Z             {
2026-06-22T02:04:44.4195024Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.4195258Z               "line": 212
2026-06-22T02:04:44.4195434Z             },
2026-06-22T02:04:44.4195592Z             {
2026-06-22T02:04:44.4195783Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.4196035Z               "line": 221
2026-06-22T02:04:44.4196216Z             },
2026-06-22T02:04:44.4196383Z             {
2026-06-22T02:04:44.4196574Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.4196822Z               "line": 485
2026-06-22T02:04:44.4197003Z             },
2026-06-22T02:04:44.4197169Z             {
2026-06-22T02:04:44.4197359Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4197605Z               "line": 36
2026-06-22T02:04:44.4197777Z             },
2026-06-22T02:04:44.4197934Z             {
2026-06-22T02:04:44.4198125Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4198374Z               "line": 118
2026-06-22T02:04:44.4198553Z             },
2026-06-22T02:04:44.4198821Z             {
2026-06-22T02:04:44.4199088Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:04:44.4199318Z               "line": 329
2026-06-22T02:04:44.4199507Z             }
2026-06-22T02:04:44.4199656Z           ]
2026-06-22T02:04:44.4199827Z         },
2026-06-22T02:04:44.4200000Z         "int": {
2026-06-22T02:04:44.4200308Z           "complete": true,
2026-06-22T02:04:44.4200496Z           "evidence": [
2026-06-22T02:04:44.4200678Z             {
2026-06-22T02:04:44.4200883Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:04:44.4201125Z               "line": 17
2026-06-22T02:04:44.4201307Z             }
2026-06-22T02:04:44.4201459Z           ]
2026-06-22T02:04:44.4201617Z         },
2026-06-22T02:04:44.4201784Z         "unit": {
2026-06-22T02:04:44.4201965Z           "complete": true,
2026-06-22T02:04:44.4202152Z           "evidence": [
2026-06-22T02:04:44.4202326Z             {
2026-06-22T02:04:44.4202514Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.4202764Z               "line": 358
2026-06-22T02:04:44.4202939Z             },
2026-06-22T02:04:44.4203106Z             {
2026-06-22T02:04:44.4203306Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:04:44.4203549Z               "line": 371
2026-06-22T02:04:44.4203735Z             },
2026-06-22T02:04:44.4203893Z             {
2026-06-22T02:04:44.4204070Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:04:44.4204302Z               "line": 597
2026-06-22T02:04:44.4204484Z             }
2026-06-22T02:04:44.4204631Z           ]
2026-06-22T02:04:44.4204790Z         }
2026-06-22T02:04:44.4204956Z       }
2026-06-22T02:04:44.4205119Z     },
2026-06-22T02:04:44.4205275Z     {
2026-06-22T02:04:44.4205448Z       "id": "REQ-STORE-1",
2026-06-22T02:04:44.4206395Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-22T02:04:44.4207330Z       "requiredStages": [
2026-06-22T02:04:44.4207539Z         "impl",
2026-06-22T02:04:44.4207711Z         "unit"
2026-06-22T02:04:44.4207876Z       ],
2026-06-22T02:04:44.4208033Z       "stages": {
2026-06-22T02:04:44.4208203Z         "doc": {
2026-06-22T02:04:44.4208389Z           "complete": false,
2026-06-22T02:04:44.4208585Z           "evidence": []
2026-06-22T02:04:44.4208761Z         },
2026-06-22T02:04:44.4208919Z         "impl": {
2026-06-22T02:04:44.4209181Z           "complete": true,
2026-06-22T02:04:44.4209381Z           "evidence": [
2026-06-22T02:04:44.4209563Z             {
2026-06-22T02:04:44.4209762Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4210020Z               "line": 23
2026-06-22T02:04:44.4210198Z             },
2026-06-22T02:04:44.4210364Z             {
2026-06-22T02:04:44.4210574Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4210825Z               "line": 46
2026-06-22T02:04:44.4211008Z             },
2026-06-22T02:04:44.4211171Z             {
2026-06-22T02:04:44.4211366Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4211610Z               "line": 97
2026-06-22T02:04:44.4211791Z             },
2026-06-22T02:04:44.4211948Z             {
2026-06-22T02:04:44.4212149Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4212397Z               "line": 125
2026-06-22T02:04:44.4212582Z             },
2026-06-22T02:04:44.4212736Z             {
2026-06-22T02:04:44.4212935Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4213173Z               "line": 207
2026-06-22T02:04:44.4213349Z             },
2026-06-22T02:04:44.4213514Z             {
2026-06-22T02:04:44.4213709Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4214058Z               "line": 231
2026-06-22T02:04:44.4214233Z             },
2026-06-22T02:04:44.4214396Z             {
2026-06-22T02:04:44.4214595Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4214839Z               "line": 467
2026-06-22T02:04:44.4215021Z             },
2026-06-22T02:04:44.4215383Z             {
2026-06-22T02:04:44.4215589Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4215845Z               "line": 25
2026-06-22T02:04:44.4216031Z             },
2026-06-22T02:04:44.4216196Z             {
2026-06-22T02:04:44.4216393Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4216646Z               "line": 120
2026-06-22T02:04:44.4216816Z             },
2026-06-22T02:04:44.4216969Z             {
2026-06-22T02:04:44.4217175Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4217422Z               "line": 148
2026-06-22T02:04:44.4217604Z             },
2026-06-22T02:04:44.4217756Z             {
2026-06-22T02:04:44.4217952Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4218201Z               "line": 165
2026-06-22T02:04:44.4218375Z             },
2026-06-22T02:04:44.4218528Z             {
2026-06-22T02:04:44.4218734Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4219054Z               "line": 180
2026-06-22T02:04:44.4219241Z             },
2026-06-22T02:04:44.4219436Z             {
2026-06-22T02:04:44.4219636Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4219880Z               "line": 198
2026-06-22T02:04:44.4220056Z             },
2026-06-22T02:04:44.4220213Z             {
2026-06-22T02:04:44.4220415Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4220666Z               "line": 207
2026-06-22T02:04:44.4220847Z             },
2026-06-22T02:04:44.4221006Z             {
2026-06-22T02:04:44.4221209Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:04:44.4221460Z               "line": 16
2026-06-22T02:04:44.4221640Z             },
2026-06-22T02:04:44.4221813Z             {
2026-06-22T02:04:44.4222003Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:04:44.4222255Z               "line": 63
2026-06-22T02:04:44.4222437Z             }
2026-06-22T02:04:44.4222594Z           ]
2026-06-22T02:04:44.4222761Z         },
2026-06-22T02:04:44.4222923Z         "int": {
2026-06-22T02:04:44.4223099Z           "complete": false,
2026-06-22T02:04:44.4223301Z           "evidence": []
2026-06-22T02:04:44.4223486Z         },
2026-06-22T02:04:44.4223644Z         "unit": {
2026-06-22T02:04:44.4223823Z           "complete": true,
2026-06-22T02:04:44.4224013Z           "evidence": [
2026-06-22T02:04:44.4224188Z             {
2026-06-22T02:04:44.4224384Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4224623Z               "line": 584
2026-06-22T02:04:44.4224812Z             },
2026-06-22T02:04:44.4224971Z             {
2026-06-22T02:04:44.4225170Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4225418Z               "line": 594
2026-06-22T02:04:44.4225595Z             },
2026-06-22T02:04:44.4225751Z             {
2026-06-22T02:04:44.4225952Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4226197Z               "line": 616
2026-06-22T02:04:44.4226381Z             },
2026-06-22T02:04:44.4226540Z             {
2026-06-22T02:04:44.4226738Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4226972Z               "line": 632
2026-06-22T02:04:44.4227138Z             },
2026-06-22T02:04:44.4227310Z             {
2026-06-22T02:04:44.4227506Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:04:44.4227749Z               "line": 690
2026-06-22T02:04:44.4227926Z             },
2026-06-22T02:04:44.4228083Z             {
2026-06-22T02:04:44.4228287Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4228669Z               "line": 472
2026-06-22T02:04:44.4228840Z             },
2026-06-22T02:04:44.4229083Z             {
2026-06-22T02:04:44.4229290Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:04:44.4229538Z               "line": 507
2026-06-22T02:04:44.4229815Z             },
2026-06-22T02:04:44.4229972Z             {
2026-06-22T02:04:44.4230154Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:04:44.4230383Z               "line": 120
2026-06-22T02:04:44.4230563Z             },
2026-06-22T02:04:44.4230726Z             {
2026-06-22T02:04:44.4230921Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:04:44.4231160Z               "line": 128
2026-06-22T02:04:44.4231337Z             }
2026-06-22T02:04:44.4231489Z           ]
2026-06-22T02:04:44.4231652Z         }
2026-06-22T02:04:44.4231812Z       }
2026-06-22T02:04:44.4231960Z     },
2026-06-22T02:04:44.4232110Z     {
2026-06-22T02:04:44.4232272Z       "id": "REQ-SUBNET-1",
2026-06-22T02:04:44.4232683Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-22T02:04:44.4233125Z       "requiredStages": [
2026-06-22T02:04:44.4233307Z         "impl",
2026-06-22T02:04:44.4233483Z         "unit"
2026-06-22T02:04:44.4233640Z       ],
2026-06-22T02:04:44.4233726Z       "stages": {
2026-06-22T02:04:44.4233813Z         "doc": {
2026-06-22T02:04:44.4233913Z           "complete": false,
2026-06-22T02:04:44.4234003Z           "evidence": []
2026-06-22T02:04:44.4234084Z         },
2026-06-22T02:04:44.4234166Z         "impl": {
2026-06-22T02:04:44.4234252Z           "complete": true,
2026-06-22T02:04:44.4234336Z           "evidence": [
2026-06-22T02:04:44.4234421Z             {
2026-06-22T02:04:44.4234550Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4234634Z               "line": 281
2026-06-22T02:04:44.4234724Z             },
2026-06-22T02:04:44.4234801Z             {
2026-06-22T02:04:44.4234921Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4235015Z               "line": 651
2026-06-22T02:04:44.4235096Z             },
2026-06-22T02:04:44.4235183Z             {
2026-06-22T02:04:44.4235287Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4235387Z               "line": 3399
2026-06-22T02:04:44.4235464Z             },
2026-06-22T02:04:44.4235550Z             {
2026-06-22T02:04:44.4235654Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4235735Z               "line": 3709
2026-06-22T02:04:44.4235817Z             },
2026-06-22T02:04:44.4235897Z             {
2026-06-22T02:04:44.4235997Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4236089Z               "line": 3728
2026-06-22T02:04:44.4236174Z             },
2026-06-22T02:04:44.4236265Z             {
2026-06-22T02:04:44.4236365Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4236503Z               "line": 3792
2026-06-22T02:04:44.4236589Z             },
2026-06-22T02:04:44.4236675Z             {
2026-06-22T02:04:44.4236776Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4236870Z               "line": 3834
2026-06-22T02:04:44.4236960Z             },
2026-06-22T02:04:44.4237105Z             {
2026-06-22T02:04:44.4237226Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4237312Z               "line": 4023
2026-06-22T02:04:44.4237398Z             },
2026-06-22T02:04:44.4237481Z             {
2026-06-22T02:04:44.4237584Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4237685Z               "line": 4093
2026-06-22T02:04:44.4237784Z             },
2026-06-22T02:04:44.4237893Z             {
2026-06-22T02:04:44.4238004Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4238104Z               "line": 4317
2026-06-22T02:04:44.4238208Z             },
2026-06-22T02:04:44.4238299Z             {
2026-06-22T02:04:44.4238514Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4238624Z               "line": 4961
2026-06-22T02:04:44.4238720Z             },
2026-06-22T02:04:44.4238800Z             {
2026-06-22T02:04:44.4238924Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.4239114Z               "line": 418
2026-06-22T02:04:44.4239292Z             }
2026-06-22T02:04:44.4239373Z           ]
2026-06-22T02:04:44.4239453Z         },
2026-06-22T02:04:44.4239542Z         "int": {
2026-06-22T02:04:44.4239633Z           "complete": false,
2026-06-22T02:04:44.4239732Z           "evidence": []
2026-06-22T02:04:44.4239812Z         },
2026-06-22T02:04:44.4239898Z         "unit": {
2026-06-22T02:04:44.4239999Z           "complete": true,
2026-06-22T02:04:44.4240079Z           "evidence": [
2026-06-22T02:04:44.4240170Z             {
2026-06-22T02:04:44.4240299Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4240390Z               "line": 1584
2026-06-22T02:04:44.4240480Z             },
2026-06-22T02:04:44.4240566Z             {
2026-06-22T02:04:44.4240676Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4240770Z               "line": 9964
2026-06-22T02:04:44.4240852Z             },
2026-06-22T02:04:44.4240939Z             {
2026-06-22T02:04:44.4241052Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4241157Z               "line": 10134
2026-06-22T02:04:44.4241239Z             },
2026-06-22T02:04:44.4241319Z             {
2026-06-22T02:04:44.4241424Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4241506Z               "line": 10141
2026-06-22T02:04:44.4241592Z             },
2026-06-22T02:04:44.4241671Z             {
2026-06-22T02:04:44.4241777Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4241859Z               "line": 10194
2026-06-22T02:04:44.4241944Z             },
2026-06-22T02:04:44.4242029Z             {
2026-06-22T02:04:44.4242141Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4242222Z               "line": 10211
2026-06-22T02:04:44.4242310Z             },
2026-06-22T02:04:44.4242381Z             {
2026-06-22T02:04:44.4242491Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4242576Z               "line": 10241
2026-06-22T02:04:44.4242660Z             },
2026-06-22T02:04:44.4242750Z             {
2026-06-22T02:04:44.4242852Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4242937Z               "line": 10357
2026-06-22T02:04:44.4243008Z             },
2026-06-22T02:04:44.4243089Z             {
2026-06-22T02:04:44.4243185Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4243313Z               "line": 10508
2026-06-22T02:04:44.4243443Z             }
2026-06-22T02:04:44.4243567Z           ]
2026-06-22T02:04:44.4243657Z         }
2026-06-22T02:04:44.4243729Z       }
2026-06-22T02:04:44.4243820Z     },
2026-06-22T02:04:44.4243910Z     {
2026-06-22T02:04:44.4244005Z       "id": "REQ-SUBNET-2",
2026-06-22T02:04:44.4244296Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-22T02:04:44.4244402Z       "requiredStages": [
2026-06-22T02:04:44.4244520Z         "impl",
2026-06-22T02:04:44.4244616Z         "unit",
2026-06-22T02:04:44.4244707Z         "int"
2026-06-22T02:04:44.4244792Z       ],
2026-06-22T02:04:44.4244887Z       "stages": {
2026-06-22T02:04:44.4244971Z         "doc": {
2026-06-22T02:04:44.4245058Z           "complete": true,
2026-06-22T02:04:44.4245185Z           "evidence": [
2026-06-22T02:04:44.4245279Z             {
2026-06-22T02:04:44.4245433Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T02:04:44.4245518Z               "line": 60
2026-06-22T02:04:44.4245598Z             }
2026-06-22T02:04:44.4245690Z           ]
2026-06-22T02:04:44.4245776Z         },
2026-06-22T02:04:44.4245871Z         "impl": {
2026-06-22T02:04:44.4245985Z           "complete": true,
2026-06-22T02:04:44.4246115Z           "evidence": [
2026-06-22T02:04:44.4246315Z             {
2026-06-22T02:04:44.4246443Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4246543Z               "line": 980
2026-06-22T02:04:44.4246629Z             },
2026-06-22T02:04:44.4246720Z             {
2026-06-22T02:04:44.4246834Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.4246997Z               "line": 2000
2026-06-22T02:04:44.4247082Z             },
2026-06-22T02:04:44.4247182Z             {
2026-06-22T02:04:44.4247307Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4247401Z               "line": 633
2026-06-22T02:04:44.4251813Z             },
2026-06-22T02:04:44.4251928Z             {
2026-06-22T02:04:44.4252071Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:04:44.4252157Z               "line": 817
2026-06-22T02:04:44.4252246Z             },
2026-06-22T02:04:44.4252332Z             {
2026-06-22T02:04:44.4252457Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4252556Z               "line": 26
2026-06-22T02:04:44.4252637Z             },
2026-06-22T02:04:44.4252720Z             {
2026-06-22T02:04:44.4252842Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4252932Z               "line": 60
2026-06-22T02:04:44.4253032Z             },
2026-06-22T02:04:44.4253118Z             {
2026-06-22T02:04:44.4253230Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4253325Z               "line": 168
2026-06-22T02:04:44.4253412Z             },
2026-06-22T02:04:44.4253498Z             {
2026-06-22T02:04:44.4253616Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4253698Z               "line": 295
2026-06-22T02:04:44.4253779Z             },
2026-06-22T02:04:44.4253859Z             {
2026-06-22T02:04:44.4253974Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4254056Z               "line": 417
2026-06-22T02:04:44.4254132Z             },
2026-06-22T02:04:44.4254260Z             {
2026-06-22T02:04:44.4254394Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:04:44.4254480Z               "line": 252
2026-06-22T02:04:44.4254570Z             },
2026-06-22T02:04:44.4254647Z             {
2026-06-22T02:04:44.4254760Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4254856Z               "line": 3755
2026-06-22T02:04:44.4254943Z             },
2026-06-22T02:04:44.4255029Z             {
2026-06-22T02:04:44.4255123Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4255214Z               "line": 4256
2026-06-22T02:04:44.4255301Z             },
2026-06-22T02:04:44.4255376Z             {
2026-06-22T02:04:44.4255480Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4255570Z               "line": 4892
2026-06-22T02:04:44.4255661Z             }
2026-06-22T02:04:44.4255745Z           ]
2026-06-22T02:04:44.4255825Z         },
2026-06-22T02:04:44.4255911Z         "int": {
2026-06-22T02:04:44.4256017Z           "complete": true,
2026-06-22T02:04:44.4256102Z           "evidence": [
2026-06-22T02:04:44.4256187Z             {
2026-06-22T02:04:44.4256317Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-22T02:04:44.4256407Z               "line": 22
2026-06-22T02:04:44.4256492Z             },
2026-06-22T02:04:44.4256575Z             {
2026-06-22T02:04:44.4256703Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4256798Z               "line": 645
2026-06-22T02:04:44.4256880Z             },
2026-06-22T02:04:44.4256965Z             {
2026-06-22T02:04:44.4257084Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4257180Z               "line": 887
2026-06-22T02:04:44.4257261Z             }
2026-06-22T02:04:44.4257347Z           ]
2026-06-22T02:04:44.4257437Z         },
2026-06-22T02:04:44.4257519Z         "unit": {
2026-06-22T02:04:44.4257614Z           "complete": true,
2026-06-22T02:04:44.4257704Z           "evidence": [
2026-06-22T02:04:44.4257924Z             {
2026-06-22T02:04:44.4258057Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4258139Z               "line": 586
2026-06-22T02:04:44.4258225Z             },
2026-06-22T02:04:44.4258304Z             {
2026-06-22T02:04:44.4258408Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4258610Z               "line": 10004
2026-06-22T02:04:44.4258699Z             },
2026-06-22T02:04:44.4258785Z             {
2026-06-22T02:04:44.4258891Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4259071Z               "line": 10715
2026-06-22T02:04:44.4259163Z             }
2026-06-22T02:04:44.4259248Z           ]
2026-06-22T02:04:44.4259329Z         }
2026-06-22T02:04:44.4259406Z       }
2026-06-22T02:04:44.4259482Z     },
2026-06-22T02:04:44.4259568Z     {
2026-06-22T02:04:44.4259658Z       "id": "REQ-SUBNET-3",
2026-06-22T02:04:44.4259935Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-22T02:04:44.4260040Z       "requiredStages": [
2026-06-22T02:04:44.4260117Z         "impl",
2026-06-22T02:04:44.4260207Z         "unit"
2026-06-22T02:04:44.4260288Z       ],
2026-06-22T02:04:44.4260374Z       "stages": {
2026-06-22T02:04:44.4260456Z         "doc": {
2026-06-22T02:04:44.4260545Z           "complete": false,
2026-06-22T02:04:44.4260635Z           "evidence": []
2026-06-22T02:04:44.4260716Z         },
2026-06-22T02:04:44.4260801Z         "impl": {
2026-06-22T02:04:44.4260885Z           "complete": true,
2026-06-22T02:04:44.4260980Z           "evidence": [
2026-06-22T02:04:44.4261061Z             {
2026-06-22T02:04:44.4261195Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4261275Z               "line": 152
2026-06-22T02:04:44.4261357Z             },
2026-06-22T02:04:44.4261439Z             {
2026-06-22T02:04:44.4261571Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4261662Z               "line": 299
2026-06-22T02:04:44.4261744Z             },
2026-06-22T02:04:44.4261820Z             {
2026-06-22T02:04:44.4261948Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4262025Z               "line": 443
2026-06-22T02:04:44.4262111Z             },
2026-06-22T02:04:44.4262196Z             {
2026-06-22T02:04:44.4262316Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4262402Z               "line": 532
2026-06-22T02:04:44.4262488Z             },
2026-06-22T02:04:44.4262568Z             {
2026-06-22T02:04:44.4262688Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4262773Z               "line": 125
2026-06-22T02:04:44.4262863Z             },
2026-06-22T02:04:44.4262951Z             {
2026-06-22T02:04:44.4263074Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4263160Z               "line": 253
2026-06-22T02:04:44.4263246Z             },
2026-06-22T02:04:44.4263318Z             {
2026-06-22T02:04:44.4263431Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4263521Z               "line": 264
2026-06-22T02:04:44.4263602Z             },
2026-06-22T02:04:44.4263687Z             {
2026-06-22T02:04:44.4263800Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4263890Z               "line": 285
2026-06-22T02:04:44.4263972Z             },
2026-06-22T02:04:44.4264058Z             {
2026-06-22T02:04:44.4264176Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4264263Z               "line": 621
2026-06-22T02:04:44.4264343Z             },
2026-06-22T02:04:44.4264429Z             {
2026-06-22T02:04:44.4264549Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4264626Z               "line": 680
2026-06-22T02:04:44.4264711Z             },
2026-06-22T02:04:44.4264801Z             {
2026-06-22T02:04:44.4264921Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.4265111Z               "line": 61
2026-06-22T02:04:44.4265188Z             },
2026-06-22T02:04:44.4265274Z             {
2026-06-22T02:04:44.4265392Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.4265478Z               "line": 90
2026-06-22T02:04:44.4265673Z             },
2026-06-22T02:04:44.4265750Z             {
2026-06-22T02:04:44.4265866Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.4265950Z               "line": 125
2026-06-22T02:04:44.4266035Z             },
2026-06-22T02:04:44.4266120Z             {
2026-06-22T02:04:44.4266235Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T02:04:44.4266328Z               "line": 9
2026-06-22T02:04:44.4266413Z             },
2026-06-22T02:04:44.4266505Z             {
2026-06-22T02:04:44.4266606Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4266700Z               "line": 4093
2026-06-22T02:04:44.4266786Z             },
2026-06-22T02:04:44.4266872Z             {
2026-06-22T02:04:44.4266981Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.4267072Z               "line": 445
2026-06-22T02:04:44.4267154Z             }
2026-06-22T02:04:44.4267239Z           ]
2026-06-22T02:04:44.4267310Z         },
2026-06-22T02:04:44.4267401Z         "int": {
2026-06-22T02:04:44.4267497Z           "complete": false,
2026-06-22T02:04:44.4267597Z           "evidence": []
2026-06-22T02:04:44.4267673Z         },
2026-06-22T02:04:44.4267759Z         "unit": {
2026-06-22T02:04:44.4267845Z           "complete": true,
2026-06-22T02:04:44.4267935Z           "evidence": [
2026-06-22T02:04:44.4268021Z             {
2026-06-22T02:04:44.4268137Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4268221Z               "line": 1356
2026-06-22T02:04:44.4268302Z             },
2026-06-22T02:04:44.4268384Z             {
2026-06-22T02:04:44.4268507Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4268598Z               "line": 1713
2026-06-22T02:04:44.4268680Z             },
2026-06-22T02:04:44.4268752Z             {
2026-06-22T02:04:44.4268869Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.4269026Z               "line": 892
2026-06-22T02:04:44.4269108Z             },
2026-06-22T02:04:44.4269198Z             {
2026-06-22T02:04:44.4269370Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4269465Z               "line": 991
2026-06-22T02:04:44.4269541Z             },
2026-06-22T02:04:44.4269626Z             {
2026-06-22T02:04:44.4269732Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4269823Z               "line": 1041
2026-06-22T02:04:44.4269908Z             },
2026-06-22T02:04:44.4269989Z             {
2026-06-22T02:04:44.4270099Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4270185Z               "line": 1100
2026-06-22T02:04:44.4270270Z             },
2026-06-22T02:04:44.4270348Z             {
2026-06-22T02:04:44.4270471Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:04:44.4270547Z               "line": 234
2026-06-22T02:04:44.4270634Z             },
2026-06-22T02:04:44.4270719Z             {
2026-06-22T02:04:44.4270828Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T02:04:44.4270924Z               "line": 49
2026-06-22T02:04:44.4271011Z             },
2026-06-22T02:04:44.4271095Z             {
2026-06-22T02:04:44.4271190Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4271271Z               "line": 10357
2026-06-22T02:04:44.4271361Z             },
2026-06-22T02:04:44.4271445Z             {
2026-06-22T02:04:44.4271550Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4271636Z               "line": 10463
2026-06-22T02:04:44.4271723Z             },
2026-06-22T02:04:44.4271807Z             {
2026-06-22T02:04:44.4271917Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4272193Z               "line": 10681
2026-06-22T02:04:44.4272295Z             }
2026-06-22T02:04:44.4272375Z           ]
2026-06-22T02:04:44.4272460Z         }
2026-06-22T02:04:44.4272547Z       }
2026-06-22T02:04:44.4272624Z     },
2026-06-22T02:04:44.4272714Z     {
2026-06-22T02:04:44.4272794Z       "id": "REQ-SUBNET-4",
2026-06-22T02:04:44.4273181Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-22T02:04:44.4273277Z       "requiredStages": [
2026-06-22T02:04:44.4273366Z         "impl",
2026-06-22T02:04:44.4273452Z         "unit"
2026-06-22T02:04:44.4273535Z       ],
2026-06-22T02:04:44.4273620Z       "stages": {
2026-06-22T02:04:44.4273705Z         "doc": {
2026-06-22T02:04:44.4273797Z           "complete": true,
2026-06-22T02:04:44.4273892Z           "evidence": [
2026-06-22T02:04:44.4273972Z             {
2026-06-22T02:04:44.4274133Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T02:04:44.4274233Z               "line": 60
2026-06-22T02:04:44.4274317Z             }
2026-06-22T02:04:44.4274407Z           ]
2026-06-22T02:04:44.4274489Z         },
2026-06-22T02:04:44.4274575Z         "impl": {
2026-06-22T02:04:44.4274670Z           "complete": true,
2026-06-22T02:04:44.4274813Z           "evidence": [
2026-06-22T02:04:44.4274899Z             {
2026-06-22T02:04:44.4275003Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4275099Z               "line": 3399
2026-06-22T02:04:44.4275181Z             },
2026-06-22T02:04:44.4275272Z             {
2026-06-22T02:04:44.4275370Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4275457Z               "line": 4859
2026-06-22T02:04:44.4275547Z             },
2026-06-22T02:04:44.4275628Z             {
2026-06-22T02:04:44.4275728Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4275806Z               "line": 4892
2026-06-22T02:04:44.4275895Z             }
2026-06-22T02:04:44.4275976Z           ]
2026-06-22T02:04:44.4276068Z         },
2026-06-22T02:04:44.4276149Z         "int": {
2026-06-22T02:04:44.4276243Z           "complete": false,
2026-06-22T02:04:44.4276334Z           "evidence": []
2026-06-22T02:04:44.4276416Z         },
2026-06-22T02:04:44.4276506Z         "unit": {
2026-06-22T02:04:44.4276600Z           "complete": true,
2026-06-22T02:04:44.4276690Z           "evidence": [
2026-06-22T02:04:44.4276776Z             {
2026-06-22T02:04:44.4276874Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4276974Z               "line": 10120
2026-06-22T02:04:44.4277050Z             },
2026-06-22T02:04:44.4277137Z             {
2026-06-22T02:04:44.4277222Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4277312Z               "line": 10194
2026-06-22T02:04:44.4277400Z             }
2026-06-22T02:04:44.4277475Z           ]
2026-06-22T02:04:44.4277560Z         }
2026-06-22T02:04:44.4277646Z       }
2026-06-22T02:04:44.4277724Z     },
2026-06-22T02:04:44.4277809Z     {
2026-06-22T02:04:44.4277908Z       "id": "REQ-SUBNET-5",
2026-06-22T02:04:44.4279192Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-22T02:04:44.4279336Z       "requiredStages": [
2026-06-22T02:04:44.4279424Z         "impl",
2026-06-22T02:04:44.4279524Z         "unit",
2026-06-22T02:04:44.4279610Z         "int"
2026-06-22T02:04:44.4279697Z       ],
2026-06-22T02:04:44.4279777Z       "stages": {
2026-06-22T02:04:44.4279867Z         "doc": {
2026-06-22T02:04:44.4279949Z           "complete": false,
2026-06-22T02:04:44.4280045Z           "evidence": []
2026-06-22T02:04:44.4280115Z         },
2026-06-22T02:04:44.4280196Z         "impl": {
2026-06-22T02:04:44.4280397Z           "complete": true,
2026-06-22T02:04:44.4280492Z           "evidence": [
2026-06-22T02:04:44.4280574Z             {
2026-06-22T02:04:44.4280697Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:04:44.4280792Z               "line": 128
2026-06-22T02:04:44.4280879Z             },
2026-06-22T02:04:44.4281060Z             {
2026-06-22T02:04:44.4281189Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:04:44.4281270Z               "line": 413
2026-06-22T02:04:44.4281355Z             },
2026-06-22T02:04:44.4281441Z             {
2026-06-22T02:04:44.4281552Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4281636Z               "line": 74
2026-06-22T02:04:44.4281722Z             },
2026-06-22T02:04:44.4281802Z             {
2026-06-22T02:04:44.4281907Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.4281996Z               "line": 332
2026-06-22T02:04:44.4282081Z             },
2026-06-22T02:04:44.4282172Z             {
2026-06-22T02:04:44.4282278Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.4282363Z               "line": 621
2026-06-22T02:04:44.4282449Z             },
2026-06-22T02:04:44.4282535Z             {
2026-06-22T02:04:44.4282654Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:04:44.4282744Z               "line": 31
2026-06-22T02:04:44.4282831Z             },
2026-06-22T02:04:44.4282912Z             {
2026-06-22T02:04:44.4283044Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:04:44.4283137Z               "line": 50
2026-06-22T02:04:44.4283217Z             },
2026-06-22T02:04:44.4283297Z             {
2026-06-22T02:04:44.4283417Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:04:44.4283508Z               "line": 69
2026-06-22T02:04:44.4283593Z             },
2026-06-22T02:04:44.4283674Z             {
2026-06-22T02:04:44.4283799Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:04:44.4283879Z               "line": 113
2026-06-22T02:04:44.4283970Z             },
2026-06-22T02:04:44.4284047Z             {
2026-06-22T02:04:44.4284175Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:04:44.4284260Z               "line": 25
2026-06-22T02:04:44.4284347Z             },
2026-06-22T02:04:44.4284443Z             {
2026-06-22T02:04:44.4284565Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:04:44.4284660Z               "line": 34
2026-06-22T02:04:44.4284737Z             },
2026-06-22T02:04:44.4284812Z             {
2026-06-22T02:04:44.4284938Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:04:44.4285030Z               "line": 17
2026-06-22T02:04:44.4285121Z             },
2026-06-22T02:04:44.4285206Z             {
2026-06-22T02:04:44.4285311Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4285398Z               "line": 4817
2026-06-22T02:04:44.4285488Z             },
2026-06-22T02:04:44.4285587Z             {
2026-06-22T02:04:44.4285693Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:04:44.4285779Z               "line": 419
2026-06-22T02:04:44.4285869Z             }
2026-06-22T02:04:44.4285955Z           ]
2026-06-22T02:04:44.4286036Z         },
2026-06-22T02:04:44.4286131Z         "int": {
2026-06-22T02:04:44.4286226Z           "complete": true,
2026-06-22T02:04:44.4286313Z           "evidence": [
2026-06-22T02:04:44.4286399Z             {
2026-06-22T02:04:44.4286522Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.4286613Z               "line": 821
2026-06-22T02:04:44.4286695Z             }
2026-06-22T02:04:44.4286770Z           ]
2026-06-22T02:04:44.4286856Z         },
2026-06-22T02:04:44.4286938Z         "unit": {
2026-06-22T02:04:44.4287029Z           "complete": true,
2026-06-22T02:04:44.4287118Z           "evidence": [
2026-06-22T02:04:44.4287198Z             {
2026-06-22T02:04:44.4287308Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.4287482Z               "line": 341
2026-06-22T02:04:44.4287567Z             },
2026-06-22T02:04:44.4287649Z             {
2026-06-22T02:04:44.4287773Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:04:44.4287854Z               "line": 1115
2026-06-22T02:04:44.4288016Z             },
2026-06-22T02:04:44.4288097Z             {
2026-06-22T02:04:44.4288221Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:04:44.4288312Z               "line": 151
2026-06-22T02:04:44.4288389Z             },
2026-06-22T02:04:44.4288473Z             {
2026-06-22T02:04:44.4288594Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:04:44.4288683Z               "line": 61
2026-06-22T02:04:44.4288764Z             },
2026-06-22T02:04:44.4288850Z             {
2026-06-22T02:04:44.4289051Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:04:44.4289137Z               "line": 111
2026-06-22T02:04:44.4289223Z             },
2026-06-22T02:04:44.4289318Z             {
2026-06-22T02:04:44.4289437Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:04:44.4289524Z               "line": 138
2026-06-22T02:04:44.4289605Z             },
2026-06-22T02:04:44.4289684Z             {
2026-06-22T02:04:44.4289805Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:04:44.4289896Z               "line": 148
2026-06-22T02:04:44.4289975Z             },
2026-06-22T02:04:44.4290061Z             {
2026-06-22T02:04:44.4290161Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4290252Z               "line": 10021
2026-06-22T02:04:44.4290337Z             }
2026-06-22T02:04:44.4290418Z           ]
2026-06-22T02:04:44.4290504Z         }
2026-06-22T02:04:44.4290585Z       }
2026-06-22T02:04:44.4290670Z     },
2026-06-22T02:04:44.4290751Z     {
2026-06-22T02:04:44.4290848Z       "id": "REQ-SUBNET-6",
2026-06-22T02:04:44.4291515Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-22T02:04:44.4291620Z       "requiredStages": [
2026-06-22T02:04:44.4291715Z         "impl",
2026-06-22T02:04:44.4291793Z         "unit"
2026-06-22T02:04:44.4291887Z       ],
2026-06-22T02:04:44.4291977Z       "stages": {
2026-06-22T02:04:44.4292059Z         "doc": {
2026-06-22T02:04:44.4292155Z           "complete": false,
2026-06-22T02:04:44.4292249Z           "evidence": []
2026-06-22T02:04:44.4292343Z         },
2026-06-22T02:04:44.4292430Z         "impl": {
2026-06-22T02:04:44.4292523Z           "complete": true,
2026-06-22T02:04:44.4292613Z           "evidence": [
2026-06-22T02:04:44.4292694Z             {
2026-06-22T02:04:44.4292824Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4292914Z               "line": 254
2026-06-22T02:04:44.4293004Z             },
2026-06-22T02:04:44.4293086Z             {
2026-06-22T02:04:44.4293195Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4293294Z               "line": 4475
2026-06-22T02:04:44.4293377Z             },
2026-06-22T02:04:44.4293462Z             {
2026-06-22T02:04:44.4293566Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4293662Z               "line": 4492
2026-06-22T02:04:44.4293748Z             },
2026-06-22T02:04:44.4293834Z             {
2026-06-22T02:04:44.4293929Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4294011Z               "line": 4545
2026-06-22T02:04:44.4294101Z             },
2026-06-22T02:04:44.4294182Z             {
2026-06-22T02:04:44.4294282Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4294369Z               "line": 4568
2026-06-22T02:04:44.4294463Z             }
2026-06-22T02:04:44.4294544Z           ]
2026-06-22T02:04:44.4294626Z         },
2026-06-22T02:04:44.4294712Z         "int": {
2026-06-22T02:04:44.4294912Z           "complete": false,
2026-06-22T02:04:44.4294999Z           "evidence": []
2026-06-22T02:04:44.4295083Z         },
2026-06-22T02:04:44.4295163Z         "unit": {
2026-06-22T02:04:44.4295258Z           "complete": true,
2026-06-22T02:04:44.4295349Z           "evidence": [
2026-06-22T02:04:44.4295527Z             {
2026-06-22T02:04:44.4295633Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4295719Z               "line": 10035
2026-06-22T02:04:44.4295809Z             },
2026-06-22T02:04:44.4295890Z             {
2026-06-22T02:04:44.4295996Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4296072Z               "line": 10068
2026-06-22T02:04:44.4296152Z             },
2026-06-22T02:04:44.4296239Z             {
2026-06-22T02:04:44.4296349Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4296424Z               "line": 10077
2026-06-22T02:04:44.4296510Z             }
2026-06-22T02:04:44.4296597Z           ]
2026-06-22T02:04:44.4296682Z         }
2026-06-22T02:04:44.4296773Z       }
2026-06-22T02:04:44.4296854Z     },
2026-06-22T02:04:44.4296940Z     {
2026-06-22T02:04:44.4297034Z       "id": "REQ-SUBNET-7",
2026-06-22T02:04:44.4298644Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-22T02:04:44.4298753Z       "requiredStages": [
2026-06-22T02:04:44.4298844Z         "impl",
2026-06-22T02:04:44.4298924Z         "unit"
2026-06-22T02:04:44.4299101Z       ],
2026-06-22T02:04:44.4299187Z       "stages": {
2026-06-22T02:04:44.4299282Z         "doc": {
2026-06-22T02:04:44.4299372Z           "complete": false,
2026-06-22T02:04:44.4299454Z           "evidence": []
2026-06-22T02:04:44.4299540Z         },
2026-06-22T02:04:44.4299630Z         "impl": {
2026-06-22T02:04:44.4299725Z           "complete": true,
2026-06-22T02:04:44.4299807Z           "evidence": [
2026-06-22T02:04:44.4299897Z             {
2026-06-22T02:04:44.4300026Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:04:44.4300122Z               "line": 17
2026-06-22T02:04:44.4300202Z             },
2026-06-22T02:04:44.4300293Z             {
2026-06-22T02:04:44.4300418Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4300499Z               "line": 103
2026-06-22T02:04:44.4300592Z             },
2026-06-22T02:04:44.4300668Z             {
2026-06-22T02:04:44.4300779Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:04:44.4300860Z               "line": 312
2026-06-22T02:04:44.4300940Z             },
2026-06-22T02:04:44.4301036Z             {
2026-06-22T02:04:44.4301155Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:04:44.4301250Z               "line": 131
2026-06-22T02:04:44.4301331Z             },
2026-06-22T02:04:44.4301418Z             {
2026-06-22T02:04:44.4301546Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4301636Z               "line": 160
2026-06-22T02:04:44.4301728Z             },
2026-06-22T02:04:44.4301813Z             {
2026-06-22T02:04:44.4301942Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4302029Z               "line": 447
2026-06-22T02:04:44.4302122Z             },
2026-06-22T02:04:44.4302203Z             {
2026-06-22T02:04:44.4302329Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4302419Z               "line": 670
2026-06-22T02:04:44.4302504Z             },
2026-06-22T02:04:44.4302585Z             {
2026-06-22T02:04:44.4302710Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4302917Z               "line": 710
2026-06-22T02:04:44.4302994Z             },
2026-06-22T02:04:44.4303074Z             {
2026-06-22T02:04:44.4303211Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4303297Z               "line": 766
2026-06-22T02:04:44.4303478Z             },
2026-06-22T02:04:44.4303564Z             {
2026-06-22T02:04:44.4303698Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.4303793Z               "line": 136
2026-06-22T02:04:44.4303878Z             },
2026-06-22T02:04:44.4303966Z             {
2026-06-22T02:04:44.4304084Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4304174Z               "line": 139
2026-06-22T02:04:44.4304257Z             }
2026-06-22T02:04:44.4304332Z           ]
2026-06-22T02:04:44.4304413Z         },
2026-06-22T02:04:44.4304498Z         "int": {
2026-06-22T02:04:44.4304595Z           "complete": false,
2026-06-22T02:04:44.4304689Z           "evidence": []
2026-06-22T02:04:44.4304780Z         },
2026-06-22T02:04:44.4304857Z         "unit": {
2026-06-22T02:04:44.4304943Z           "complete": true,
2026-06-22T02:04:44.4305032Z           "evidence": [
2026-06-22T02:04:44.4305109Z             {
2026-06-22T02:04:44.4305235Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:04:44.4305323Z               "line": 136
2026-06-22T02:04:44.4305414Z             },
2026-06-22T02:04:44.4305496Z             {
2026-06-22T02:04:44.4305620Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:04:44.4305700Z               "line": 156
2026-06-22T02:04:44.4305780Z             },
2026-06-22T02:04:44.4305871Z             {
2026-06-22T02:04:44.4305993Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4306078Z               "line": 987
2026-06-22T02:04:44.4306159Z             },
2026-06-22T02:04:44.4306246Z             {
2026-06-22T02:04:44.4306379Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:04:44.4306465Z               "line": 1009
2026-06-22T02:04:44.4306556Z             },
2026-06-22T02:04:44.4306637Z             {
2026-06-22T02:04:44.4306765Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:04:44.4306861Z               "line": 1419
2026-06-22T02:04:44.4306947Z             },
2026-06-22T02:04:44.4307032Z             {
2026-06-22T02:04:44.4307152Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:04:44.4307237Z               "line": 1036
2026-06-22T02:04:44.4307318Z             }
2026-06-22T02:04:44.4307404Z           ]
2026-06-22T02:04:44.4307486Z         }
2026-06-22T02:04:44.4307571Z       }
2026-06-22T02:04:44.4307662Z     },
2026-06-22T02:04:44.4307748Z     {
2026-06-22T02:04:44.4307848Z       "id": "REQ-SUBNET-8",
2026-06-22T02:04:44.4308926Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-22T02:04:44.4309109Z       "requiredStages": [
2026-06-22T02:04:44.4309199Z         "impl",
2026-06-22T02:04:44.4309279Z         "unit"
2026-06-22T02:04:44.4309366Z       ],
2026-06-22T02:04:44.4309452Z       "stages": {
2026-06-22T02:04:44.4309533Z         "doc": {
2026-06-22T02:04:44.4309632Z           "complete": false,
2026-06-22T02:04:44.4309719Z           "evidence": []
2026-06-22T02:04:44.4309809Z         },
2026-06-22T02:04:44.4309894Z         "impl": {
2026-06-22T02:04:44.4309990Z           "complete": true,
2026-06-22T02:04:44.4310072Z           "evidence": [
2026-06-22T02:04:44.4310162Z             {
2026-06-22T02:04:44.4310266Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4310363Z               "line": 3835
2026-06-22T02:04:44.4310552Z             },
2026-06-22T02:04:44.4310630Z             {
2026-06-22T02:04:44.4310734Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4310819Z               "line": 3864
2026-06-22T02:04:44.4310911Z             },
2026-06-22T02:04:44.4310992Z             {
2026-06-22T02:04:44.4311190Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4311286Z               "line": 3881
2026-06-22T02:04:44.4311367Z             },
2026-06-22T02:04:44.4311448Z             {
2026-06-22T02:04:44.4311553Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4311649Z               "line": 3904
2026-06-22T02:04:44.4311735Z             },
2026-06-22T02:04:44.4311819Z             {
2026-06-22T02:04:44.4311921Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4312006Z               "line": 4318
2026-06-22T02:04:44.4312097Z             }
2026-06-22T02:04:44.4312172Z           ]
2026-06-22T02:04:44.4312259Z         },
2026-06-22T02:04:44.4312345Z         "int": {
2026-06-22T02:04:44.4312430Z           "complete": false,
2026-06-22T02:04:44.4312530Z           "evidence": []
2026-06-22T02:04:44.4312617Z         },
2026-06-22T02:04:44.4312702Z         "unit": {
2026-06-22T02:04:44.4312778Z           "complete": true,
2026-06-22T02:04:44.4312875Z           "evidence": [
2026-06-22T02:04:44.4312960Z             {
2026-06-22T02:04:44.4313064Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4313146Z               "line": 10225
2026-06-22T02:04:44.4313233Z             },
2026-06-22T02:04:44.4313322Z             {
2026-06-22T02:04:44.4313421Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4313497Z               "line": 10241
2026-06-22T02:04:44.4313583Z             }
2026-06-22T02:04:44.4313667Z           ]
2026-06-22T02:04:44.4313757Z         }
2026-06-22T02:04:44.4313838Z       }
2026-06-22T02:04:44.4313929Z     },
2026-06-22T02:04:44.4314005Z     {
2026-06-22T02:04:44.4314105Z       "id": "REQ-TERM-1",
2026-06-22T02:04:44.4314272Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-22T02:04:44.4314372Z       "requiredStages": [
2026-06-22T02:04:44.4314463Z         "impl",
2026-06-22T02:04:44.4314545Z         "unit"
2026-06-22T02:04:44.4314630Z       ],
2026-06-22T02:04:44.4314715Z       "stages": {
2026-06-22T02:04:44.4314802Z         "doc": {
2026-06-22T02:04:44.4314897Z           "complete": false,
2026-06-22T02:04:44.4314973Z           "evidence": []
2026-06-22T02:04:44.4315063Z         },
2026-06-22T02:04:44.4315146Z         "impl": {
2026-06-22T02:04:44.4315240Z           "complete": true,
2026-06-22T02:04:44.4315321Z           "evidence": [
2026-06-22T02:04:44.4315407Z             {
2026-06-22T02:04:44.4315522Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:04:44.4315612Z               "line": 59
2026-06-22T02:04:44.4315693Z             },
2026-06-22T02:04:44.4315775Z             {
2026-06-22T02:04:44.4315874Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:04:44.4315965Z               "line": 234
2026-06-22T02:04:44.4316062Z             },
2026-06-22T02:04:44.4316143Z             {
2026-06-22T02:04:44.4316269Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:04:44.4316364Z               "line": 100
2026-06-22T02:04:44.4316446Z             }
2026-06-22T02:04:44.4316539Z           ]
2026-06-22T02:04:44.4316619Z         },
2026-06-22T02:04:44.4316710Z         "int": {
2026-06-22T02:04:44.4316801Z           "complete": false,
2026-06-22T02:04:44.4316901Z           "evidence": []
2026-06-22T02:04:44.4316986Z         },
2026-06-22T02:04:44.4317069Z         "unit": {
2026-06-22T02:04:44.4317159Z           "complete": true,
2026-06-22T02:04:44.4317244Z           "evidence": [
2026-06-22T02:04:44.4317340Z             {
2026-06-22T02:04:44.4317449Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:04:44.4317544Z               "line": 24
2026-06-22T02:04:44.4317625Z             },
2026-06-22T02:04:44.4317708Z             {
2026-06-22T02:04:44.4317935Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:04:44.4318018Z               "line": 56
2026-06-22T02:04:44.4318098Z             }
2026-06-22T02:04:44.4318178Z           ]
2026-06-22T02:04:44.4318264Z         }
2026-06-22T02:04:44.4321505Z       }
2026-06-22T02:04:44.4321746Z     },
2026-06-22T02:04:44.4321831Z     {
2026-06-22T02:04:44.4321932Z       "id": "REQ-TERM-2",
2026-06-22T02:04:44.4322127Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-22T02:04:44.4322214Z       "requiredStages": [
2026-06-22T02:04:44.4322295Z         "impl",
2026-06-22T02:04:44.4322384Z         "unit"
2026-06-22T02:04:44.4322461Z       ],
2026-06-22T02:04:44.4322557Z       "stages": {
2026-06-22T02:04:44.4322634Z         "doc": {
2026-06-22T02:04:44.4322727Z           "complete": false,
2026-06-22T02:04:44.4322810Z           "evidence": []
2026-06-22T02:04:44.4322896Z         },
2026-06-22T02:04:44.4322986Z         "impl": {
2026-06-22T02:04:44.4323081Z           "complete": true,
2026-06-22T02:04:44.4323168Z           "evidence": [
2026-06-22T02:04:44.4323252Z             {
2026-06-22T02:04:44.4323381Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:04:44.4323468Z               "line": 117
2026-06-22T02:04:44.4323554Z             },
2026-06-22T02:04:44.4323639Z             {
2026-06-22T02:04:44.4323754Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:04:44.4323840Z               "line": 127
2026-06-22T02:04:44.4323924Z             }
2026-06-22T02:04:44.4324005Z           ]
2026-06-22T02:04:44.4324086Z         },
2026-06-22T02:04:44.4324172Z         "int": {
2026-06-22T02:04:44.4324269Z           "complete": false,
2026-06-22T02:04:44.4324355Z           "evidence": []
2026-06-22T02:04:44.4324441Z         },
2026-06-22T02:04:44.4324524Z         "unit": {
2026-06-22T02:04:44.4324617Z           "complete": true,
2026-06-22T02:04:44.4324703Z           "evidence": [
2026-06-22T02:04:44.4324790Z             {
2026-06-22T02:04:44.4324918Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T02:04:44.4325008Z               "line": 46
2026-06-22T02:04:44.4325086Z             },
2026-06-22T02:04:44.4325166Z             {
2026-06-22T02:04:44.4325290Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T02:04:44.4325377Z               "line": 77
2026-06-22T02:04:44.4325462Z             }
2026-06-22T02:04:44.4325552Z           ]
2026-06-22T02:04:44.4325633Z         }
2026-06-22T02:04:44.4325715Z       }
2026-06-22T02:04:44.4325795Z     },
2026-06-22T02:04:44.4325876Z     {
2026-06-22T02:04:44.4325967Z       "id": "REQ-TERM-3",
2026-06-22T02:04:44.4326115Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-22T02:04:44.4326215Z       "requiredStages": [
2026-06-22T02:04:44.4326292Z         "impl",
2026-06-22T02:04:44.4326378Z         "unit"
2026-06-22T02:04:44.4326462Z       ],
2026-06-22T02:04:44.4326554Z       "stages": {
2026-06-22T02:04:44.4326631Z         "doc": {
2026-06-22T02:04:44.4326736Z           "complete": false,
2026-06-22T02:04:44.4326834Z           "evidence": []
2026-06-22T02:04:44.4326914Z         },
2026-06-22T02:04:44.4327001Z         "impl": {
2026-06-22T02:04:44.4327090Z           "complete": true,
2026-06-22T02:04:44.4327184Z           "evidence": [
2026-06-22T02:04:44.4327271Z             {
2026-06-22T02:04:44.4327390Z               "path": "crates/spt-term/src/stream.rs",
2026-06-22T02:04:44.4327480Z               "line": 71
2026-06-22T02:04:44.4327561Z             }
2026-06-22T02:04:44.4327648Z           ]
2026-06-22T02:04:44.4327724Z         },
2026-06-22T02:04:44.4327809Z         "int": {
2026-06-22T02:04:44.4327895Z           "complete": false,
2026-06-22T02:04:44.4327986Z           "evidence": []
2026-06-22T02:04:44.4328063Z         },
2026-06-22T02:04:44.4328147Z         "unit": {
2026-06-22T02:04:44.4328248Z           "complete": true,
2026-06-22T02:04:44.4328338Z           "evidence": [
2026-06-22T02:04:44.4328419Z             {
2026-06-22T02:04:44.4328639Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T02:04:44.4328724Z               "line": 37
2026-06-22T02:04:44.4328815Z             },
2026-06-22T02:04:44.4328897Z             {
2026-06-22T02:04:44.4329106Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T02:04:44.4329288Z               "line": 67
2026-06-22T02:04:44.4329391Z             }
2026-06-22T02:04:44.4329467Z           ]
2026-06-22T02:04:44.4329549Z         }
2026-06-22T02:04:44.4329633Z       }
2026-06-22T02:04:44.4329713Z     },
2026-06-22T02:04:44.4329798Z     {
2026-06-22T02:04:44.4329880Z       "id": "REQ-TERM-4",
2026-06-22T02:04:44.4330356Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-22T02:04:44.4330447Z       "requiredStages": [
2026-06-22T02:04:44.4330538Z         "impl",
2026-06-22T02:04:44.4330615Z         "unit",
2026-06-22T02:04:44.4330700Z         "int"
2026-06-22T02:04:44.4330781Z       ],
2026-06-22T02:04:44.4330858Z       "stages": {
2026-06-22T02:04:44.4330939Z         "doc": {
2026-06-22T02:04:44.4331029Z           "complete": false,
2026-06-22T02:04:44.4331130Z           "evidence": []
2026-06-22T02:04:44.4331215Z         },
2026-06-22T02:04:44.4331301Z         "impl": {
2026-06-22T02:04:44.4331396Z           "complete": true,
2026-06-22T02:04:44.4331478Z           "evidence": [
2026-06-22T02:04:44.4331563Z             {
2026-06-22T02:04:44.4331682Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4331769Z               "line": 37
2026-06-22T02:04:44.4331854Z             },
2026-06-22T02:04:44.4331925Z             {
2026-06-22T02:04:44.4332051Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4332136Z               "line": 25
2026-06-22T02:04:44.4332216Z             },
2026-06-22T02:04:44.4332306Z             {
2026-06-22T02:04:44.4332435Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4332522Z               "line": 114
2026-06-22T02:04:44.4332606Z             },
2026-06-22T02:04:44.4332692Z             {
2026-06-22T02:04:44.4332798Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4332879Z               "line": 267
2026-06-22T02:04:44.4332963Z             },
2026-06-22T02:04:44.4333041Z             {
2026-06-22T02:04:44.4333160Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4333250Z               "line": 289
2026-06-22T02:04:44.4333331Z             },
2026-06-22T02:04:44.4333408Z             {
2026-06-22T02:04:44.4333527Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4333617Z               "line": 307
2026-06-22T02:04:44.4333695Z             },
2026-06-22T02:04:44.4333785Z             {
2026-06-22T02:04:44.4333894Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:04:44.4333975Z               "line": 33
2026-06-22T02:04:44.4334062Z             },
2026-06-22T02:04:44.4334146Z             {
2026-06-22T02:04:44.4334271Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4334353Z               "line": 52
2026-06-22T02:04:44.4334437Z             },
2026-06-22T02:04:44.4334522Z             {
2026-06-22T02:04:44.4334651Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4334732Z               "line": 180
2026-06-22T02:04:44.4334820Z             },
2026-06-22T02:04:44.4334906Z             {
2026-06-22T02:04:44.4335016Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4335103Z               "line": 190
2026-06-22T02:04:44.4335187Z             },
2026-06-22T02:04:44.4335268Z             {
2026-06-22T02:04:44.4335374Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4335469Z               "line": 250
2026-06-22T02:04:44.4335559Z             },
2026-06-22T02:04:44.4335641Z             {
2026-06-22T02:04:44.4335864Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4335951Z               "line": 284
2026-06-22T02:04:44.4336036Z             },
2026-06-22T02:04:44.4336117Z             {
2026-06-22T02:04:44.4336237Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4336328Z               "line": 295
2026-06-22T02:04:44.4336489Z             },
2026-06-22T02:04:44.4336576Z             {
2026-06-22T02:04:44.4336685Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4336780Z               "line": 1193
2026-06-22T02:04:44.4336857Z             }
2026-06-22T02:04:44.4336943Z           ]
2026-06-22T02:04:44.4337027Z         },
2026-06-22T02:04:44.4337114Z         "int": {
2026-06-22T02:04:44.4337206Z           "complete": true,
2026-06-22T02:04:44.4337291Z           "evidence": [
2026-06-22T02:04:44.4337375Z             {
2026-06-22T02:04:44.4337494Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-22T02:04:44.4337575Z               "line": 18
2026-06-22T02:04:44.4337664Z             }
2026-06-22T02:04:44.4337744Z           ]
2026-06-22T02:04:44.4337831Z         },
2026-06-22T02:04:44.4337917Z         "unit": {
2026-06-22T02:04:44.4338016Z           "complete": true,
2026-06-22T02:04:44.4338097Z           "evidence": [
2026-06-22T02:04:44.4338184Z             {
2026-06-22T02:04:44.4338308Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4338393Z               "line": 364
2026-06-22T02:04:44.4338479Z             },
2026-06-22T02:04:44.4338560Z             {
2026-06-22T02:04:44.4338669Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4338750Z               "line": 416
2026-06-22T02:04:44.4338837Z             },
2026-06-22T02:04:44.4338922Z             {
2026-06-22T02:04:44.4339128Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4339209Z               "line": 426
2026-06-22T02:04:44.4339289Z             },
2026-06-22T02:04:44.4339366Z             {
2026-06-22T02:04:44.4339486Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4339575Z               "line": 436
2026-06-22T02:04:44.4339666Z             },
2026-06-22T02:04:44.4339744Z             {
2026-06-22T02:04:44.4339862Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4339951Z               "line": 456
2026-06-22T02:04:44.4340036Z             },
2026-06-22T02:04:44.4340123Z             {
2026-06-22T02:04:44.4340235Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4340316Z               "line": 478
2026-06-22T02:04:44.4340397Z             },
2026-06-22T02:04:44.4340484Z             {
2026-06-22T02:04:44.4340588Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4340673Z               "line": 491
2026-06-22T02:04:44.4340761Z             },
2026-06-22T02:04:44.4340841Z             {
2026-06-22T02:04:44.4340964Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:04:44.4341046Z               "line": 502
2026-06-22T02:04:44.4341132Z             },
2026-06-22T02:04:44.4341217Z             {
2026-06-22T02:04:44.4341332Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:04:44.4341418Z               "line": 108
2026-06-22T02:04:44.4341494Z             },
2026-06-22T02:04:44.4341579Z             {
2026-06-22T02:04:44.4341690Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:04:44.4341785Z               "line": 119
2026-06-22T02:04:44.4341866Z             },
2026-06-22T02:04:44.4341946Z             {
2026-06-22T02:04:44.4342062Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:04:44.4342147Z               "line": 127
2026-06-22T02:04:44.4342233Z             },
2026-06-22T02:04:44.4342315Z             {
2026-06-22T02:04:44.4342438Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4342524Z               "line": 474
2026-06-22T02:04:44.4342611Z             },
2026-06-22T02:04:44.4342697Z             {
2026-06-22T02:04:44.4342908Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4342995Z               "line": 501
2026-06-22T02:04:44.4343077Z             },
2026-06-22T02:04:44.4343152Z             {
2026-06-22T02:04:44.4343262Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4343457Z               "line": 520
2026-06-22T02:04:44.4343547Z             },
2026-06-22T02:04:44.4343630Z             {
2026-06-22T02:04:44.4343744Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4343824Z               "line": 535
2026-06-22T02:04:44.4343910Z             },
2026-06-22T02:04:44.4343992Z             {
2026-06-22T02:04:44.4344101Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4344186Z               "line": 561
2026-06-22T02:04:44.4344269Z             },
2026-06-22T02:04:44.4344349Z             {
2026-06-22T02:04:44.4344454Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4344545Z               "line": 581
2026-06-22T02:04:44.4344631Z             },
2026-06-22T02:04:44.4344716Z             {
2026-06-22T02:04:44.4344836Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4344918Z               "line": 591
2026-06-22T02:04:44.4344997Z             },
2026-06-22T02:04:44.4345082Z             {
2026-06-22T02:04:44.4345197Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4345282Z               "line": 683
2026-06-22T02:04:44.4345362Z             },
2026-06-22T02:04:44.4345447Z             {
2026-06-22T02:04:44.4345561Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4345649Z               "line": 885
2026-06-22T02:04:44.4345733Z             },
2026-06-22T02:04:44.4345819Z             {
2026-06-22T02:04:44.4345930Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4346015Z               "line": 9792
2026-06-22T02:04:44.4346100Z             }
2026-06-22T02:04:44.4346182Z           ]
2026-06-22T02:04:44.4346268Z         }
2026-06-22T02:04:44.4346353Z       }
2026-06-22T02:04:44.4346424Z     },
2026-06-22T02:04:44.4346506Z     {
2026-06-22T02:04:44.4346587Z       "id": "REQ-TERM-5",
2026-06-22T02:04:44.4348069Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-22T02:04:44.4348168Z       "requiredStages": [
2026-06-22T02:04:44.4348243Z         "doc",
2026-06-22T02:04:44.4348328Z         "impl",
2026-06-22T02:04:44.4348415Z         "unit",
2026-06-22T02:04:44.4348501Z         "int"
2026-06-22T02:04:44.4348581Z       ],
2026-06-22T02:04:44.4348662Z       "stages": {
2026-06-22T02:04:44.4348749Z         "doc": {
2026-06-22T02:04:44.4348844Z           "complete": true,
2026-06-22T02:04:44.4348929Z           "evidence": [
2026-06-22T02:04:44.4349092Z             {
2026-06-22T02:04:44.4349207Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.4349291Z               "line": 234
2026-06-22T02:04:44.4349383Z             }
2026-06-22T02:04:44.4349473Z           ]
2026-06-22T02:04:44.4349540Z         },
2026-06-22T02:04:44.4349630Z         "impl": {
2026-06-22T02:04:44.4349722Z           "complete": true,
2026-06-22T02:04:44.4349811Z           "evidence": [
2026-06-22T02:04:44.4349897Z             {
2026-06-22T02:04:44.4350027Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4350108Z               "line": 75
2026-06-22T02:04:44.4350188Z             },
2026-06-22T02:04:44.4350270Z             {
2026-06-22T02:04:44.4350511Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4350596Z               "line": 131
2026-06-22T02:04:44.4350678Z             },
2026-06-22T02:04:44.4350758Z             {
2026-06-22T02:04:44.4350866Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4351039Z               "line": 22
2026-06-22T02:04:44.4351120Z             },
2026-06-22T02:04:44.4351205Z             {
2026-06-22T02:04:44.4351311Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4351396Z               "line": 87
2026-06-22T02:04:44.4351476Z             },
2026-06-22T02:04:44.4351562Z             {
2026-06-22T02:04:44.4351673Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:04:44.4351763Z               "line": 30
2026-06-22T02:04:44.4351844Z             },
2026-06-22T02:04:44.4351931Z             {
2026-06-22T02:04:44.4352059Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4352139Z               "line": 103
2026-06-22T02:04:44.4352231Z             },
2026-06-22T02:04:44.4352308Z             {
2026-06-22T02:04:44.4352421Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4352507Z               "line": 167
2026-06-22T02:04:44.4352589Z             },
2026-06-22T02:04:44.4352674Z             {
2026-06-22T02:04:44.4352793Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4352866Z               "line": 434
2026-06-22T02:04:44.4352951Z             },
2026-06-22T02:04:44.4353036Z             {
2026-06-22T02:04:44.4353141Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4353233Z               "line": 5650
2026-06-22T02:04:44.4353317Z             },
2026-06-22T02:04:44.4353403Z             {
2026-06-22T02:04:44.4353507Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4353584Z               "line": 5957
2026-06-22T02:04:44.4353670Z             }
2026-06-22T02:04:44.4353755Z           ]
2026-06-22T02:04:44.4353841Z         },
2026-06-22T02:04:44.4353923Z         "int": {
2026-06-22T02:04:44.4354022Z           "complete": true,
2026-06-22T02:04:44.4354107Z           "evidence": [
2026-06-22T02:04:44.4354190Z             {
2026-06-22T02:04:44.4354342Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:04:44.4354427Z               "line": 17
2026-06-22T02:04:44.4354510Z             }
2026-06-22T02:04:44.4354595Z           ]
2026-06-22T02:04:44.4354680Z         },
2026-06-22T02:04:44.4354766Z         "unit": {
2026-06-22T02:04:44.4354848Z           "complete": true,
2026-06-22T02:04:44.4354933Z           "evidence": [
2026-06-22T02:04:44.4355019Z             {
2026-06-22T02:04:44.4355139Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4355215Z               "line": 375
2026-06-22T02:04:44.4355304Z             },
2026-06-22T02:04:44.4355391Z             {
2026-06-22T02:04:44.4355497Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4355586Z               "line": 162
2026-06-22T02:04:44.4355666Z             },
2026-06-22T02:04:44.4355747Z             {
2026-06-22T02:04:44.4355852Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4355946Z               "line": 179
2026-06-22T02:04:44.4356031Z             },
2026-06-22T02:04:44.4356113Z             {
2026-06-22T02:04:44.4356223Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4356312Z               "line": 201
2026-06-22T02:04:44.4356398Z             },
2026-06-22T02:04:44.4356480Z             {
2026-06-22T02:04:44.4356594Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4356684Z               "line": 212
2026-06-22T02:04:44.4356766Z             },
2026-06-22T02:04:44.4356856Z             {
2026-06-22T02:04:44.4356960Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:04:44.4357058Z               "line": 223
2026-06-22T02:04:44.4357143Z             },
2026-06-22T02:04:44.4357228Z             {
2026-06-22T02:04:44.4357429Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4357504Z               "line": 1525
2026-06-22T02:04:44.4357595Z             },
2026-06-22T02:04:44.4357677Z             {
2026-06-22T02:04:44.4357795Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4357958Z               "line": 1568
2026-06-22T02:04:44.4358044Z             },
2026-06-22T02:04:44.4358120Z             {
2026-06-22T02:04:44.4358239Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4358321Z               "line": 606
2026-06-22T02:04:44.4358407Z             },
2026-06-22T02:04:44.4358491Z             {
2026-06-22T02:04:44.4358609Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4358690Z               "line": 634
2026-06-22T02:04:44.4358775Z             },
2026-06-22T02:04:44.4358855Z             {
2026-06-22T02:04:44.4359042Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4359123Z               "line": 646
2026-06-22T02:04:44.4359212Z             },
2026-06-22T02:04:44.4359299Z             {
2026-06-22T02:04:44.4359414Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4359498Z               "line": 669
2026-06-22T02:04:44.4359585Z             },
2026-06-22T02:04:44.4359667Z             {
2026-06-22T02:04:44.4359776Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4359866Z               "line": 8503
2026-06-22T02:04:44.4359948Z             },
2026-06-22T02:04:44.4360033Z             {
2026-06-22T02:04:44.4360138Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4360219Z               "line": 8561
2026-06-22T02:04:44.4360301Z             }
2026-06-22T02:04:44.4360381Z           ]
2026-06-22T02:04:44.4360471Z         }
2026-06-22T02:04:44.4360549Z       }
2026-06-22T02:04:44.4360630Z     },
2026-06-22T02:04:44.4360719Z     {
2026-06-22T02:04:44.4360801Z       "id": "REQ-TERM-6",
2026-06-22T02:04:44.4361881Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-22T02:04:44.4361986Z       "requiredStages": [
2026-06-22T02:04:44.4362075Z         "impl",
2026-06-22T02:04:44.4362166Z         "unit",
2026-06-22T02:04:44.4362247Z         "int"
2026-06-22T02:04:44.4362329Z       ],
2026-06-22T02:04:44.4362423Z       "stages": {
2026-06-22T02:04:44.4362505Z         "doc": {
2026-06-22T02:04:44.4362595Z           "complete": false,
2026-06-22T02:04:44.4362681Z           "evidence": []
2026-06-22T02:04:44.4362771Z         },
2026-06-22T02:04:44.4362854Z         "impl": {
2026-06-22T02:04:44.4362948Z           "complete": true,
2026-06-22T02:04:44.4363038Z           "evidence": [
2026-06-22T02:04:44.4363121Z             {
2026-06-22T02:04:44.4363243Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4363329Z               "line": 132
2026-06-22T02:04:44.4363411Z             },
2026-06-22T02:04:44.4363498Z             {
2026-06-22T02:04:44.4363625Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4363726Z               "line": 187
2026-06-22T02:04:44.4363808Z             },
2026-06-22T02:04:44.4363892Z             {
2026-06-22T02:04:44.4364019Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4364106Z               "line": 17
2026-06-22T02:04:44.4364183Z             },
2026-06-22T02:04:44.4364263Z             {
2026-06-22T02:04:44.4364377Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4364454Z               "line": 104
2026-06-22T02:04:44.4364536Z             },
2026-06-22T02:04:44.4364620Z             {
2026-06-22T02:04:44.4364731Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4364925Z               "line": 319
2026-06-22T02:04:44.4365007Z             },
2026-06-22T02:04:44.4365094Z             {
2026-06-22T02:04:44.4365203Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4365293Z               "line": 396
2026-06-22T02:04:44.4365469Z             }
2026-06-22T02:04:44.4365550Z           ]
2026-06-22T02:04:44.4365631Z         },
2026-06-22T02:04:44.4365723Z         "int": {
2026-06-22T02:04:44.4365822Z           "complete": true,
2026-06-22T02:04:44.4365908Z           "evidence": [
2026-06-22T02:04:44.4365995Z             {
2026-06-22T02:04:44.4366146Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:04:44.4366240Z               "line": 18
2026-06-22T02:04:44.4366321Z             }
2026-06-22T02:04:44.4366412Z           ]
2026-06-22T02:04:44.4366496Z         },
2026-06-22T02:04:44.4366571Z         "unit": {
2026-06-22T02:04:44.4366663Z           "complete": true,
2026-06-22T02:04:44.4366754Z           "evidence": [
2026-06-22T02:04:44.4366839Z             {
2026-06-22T02:04:44.4366944Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4367035Z               "line": 135
2026-06-22T02:04:44.4367120Z             },
2026-06-22T02:04:44.4367206Z             {
2026-06-22T02:04:44.4367331Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4367417Z               "line": 150
2026-06-22T02:04:44.4367502Z             },
2026-06-22T02:04:44.4367583Z             {
2026-06-22T02:04:44.4367688Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4367778Z               "line": 166
2026-06-22T02:04:44.4367859Z             },
2026-06-22T02:04:44.4367951Z             {
2026-06-22T02:04:44.4368065Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:04:44.4368165Z               "line": 257
2026-06-22T02:04:44.4368252Z             },
2026-06-22T02:04:44.4368337Z             {
2026-06-22T02:04:44.4368451Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4368537Z               "line": 738
2026-06-22T02:04:44.4368623Z             },
2026-06-22T02:04:44.4368708Z             {
2026-06-22T02:04:44.4368833Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4368915Z               "line": 759
2026-06-22T02:04:44.4369075Z             },
2026-06-22T02:04:44.4369160Z             {
2026-06-22T02:04:44.4369274Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:04:44.4369368Z               "line": 726
2026-06-22T02:04:44.4369439Z             }
2026-06-22T02:04:44.4369525Z           ]
2026-06-22T02:04:44.4369617Z         }
2026-06-22T02:04:44.4369692Z       }
2026-06-22T02:04:44.4369772Z     },
2026-06-22T02:04:44.4369855Z     {
2026-06-22T02:04:44.4369950Z       "id": "REQ-TERM-7",
2026-06-22T02:04:44.4371090Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-22T02:04:44.4371195Z       "requiredStages": [
2026-06-22T02:04:44.4371289Z         "impl",
2026-06-22T02:04:44.4371370Z         "unit",
2026-06-22T02:04:44.4371453Z         "int"
2026-06-22T02:04:44.4371538Z       ],
2026-06-22T02:04:44.4371631Z       "stages": {
2026-06-22T02:04:44.4371722Z         "doc": {
2026-06-22T02:04:44.4371803Z           "complete": false,
2026-06-22T02:04:44.4371902Z           "evidence": []
2026-06-22T02:04:44.4371982Z         },
2026-06-22T02:04:44.4372073Z         "impl": {
2026-06-22T02:04:44.4372159Z           "complete": true,
2026-06-22T02:04:44.4372240Z           "evidence": [
2026-06-22T02:04:44.4372320Z             {
2026-06-22T02:04:44.4372541Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4372635Z               "line": 133
2026-06-22T02:04:44.4372717Z             },
2026-06-22T02:04:44.4372803Z             {
2026-06-22T02:04:44.4372912Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4373113Z               "line": 326
2026-06-22T02:04:44.4373198Z             },
2026-06-22T02:04:44.4373284Z             {
2026-06-22T02:04:44.4373395Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:04:44.4373480Z               "line": 15
2026-06-22T02:04:44.4373565Z             },
2026-06-22T02:04:44.4373646Z             {
2026-06-22T02:04:44.4373762Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:04:44.4373851Z               "line": 32
2026-06-22T02:04:44.4373932Z             },
2026-06-22T02:04:44.4374019Z             {
2026-06-22T02:04:44.4374128Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:04:44.4374214Z               "line": 49
2026-06-22T02:04:44.4374296Z             },
2026-06-22T02:04:44.4374387Z             {
2026-06-22T02:04:44.4374508Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4374598Z               "line": 286
2026-06-22T02:04:44.4374680Z             },
2026-06-22T02:04:44.4374763Z             {
2026-06-22T02:04:44.4374890Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4374985Z               "line": 320
2026-06-22T02:04:44.4375066Z             }
2026-06-22T02:04:44.4375142Z           ]
2026-06-22T02:04:44.4375228Z         },
2026-06-22T02:04:44.4375306Z         "int": {
2026-06-22T02:04:44.4375391Z           "complete": true,
2026-06-22T02:04:44.4375485Z           "evidence": [
2026-06-22T02:04:44.4375577Z             {
2026-06-22T02:04:44.4375720Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:04:44.4375814Z               "line": 19
2026-06-22T02:04:44.4375901Z             }
2026-06-22T02:04:44.4375988Z           ]
2026-06-22T02:04:44.4376072Z         },
2026-06-22T02:04:44.4376153Z         "unit": {
2026-06-22T02:04:44.4376245Z           "complete": true,
2026-06-22T02:04:44.4376330Z           "evidence": [
2026-06-22T02:04:44.4376415Z             {
2026-06-22T02:04:44.4376525Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4376622Z               "line": 455
2026-06-22T02:04:44.4376706Z             },
2026-06-22T02:04:44.4376796Z             {
2026-06-22T02:04:44.4376911Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:04:44.4377000Z               "line": 568
2026-06-22T02:04:44.4377099Z             },
2026-06-22T02:04:44.4377180Z             {
2026-06-22T02:04:44.4377290Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:04:44.4377366Z               "line": 58
2026-06-22T02:04:44.4377495Z             },
2026-06-22T02:04:44.4377576Z             {
2026-06-22T02:04:44.4377685Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:04:44.4377776Z               "line": 77
2026-06-22T02:04:44.4377863Z             },
2026-06-22T02:04:44.4377982Z             {
2026-06-22T02:04:44.4378090Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:04:44.4378173Z               "line": 87
2026-06-22T02:04:44.4378253Z             },
2026-06-22T02:04:44.4378334Z             {
2026-06-22T02:04:44.4378458Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:04:44.4378535Z               "line": 94
2026-06-22T02:04:44.4378625Z             },
2026-06-22T02:04:44.4378706Z             {
2026-06-22T02:04:44.4378887Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4379098Z               "line": 691
2026-06-22T02:04:44.4379179Z             },
2026-06-22T02:04:44.4379263Z             {
2026-06-22T02:04:44.4379393Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:04:44.4379480Z               "line": 716
2026-06-22T02:04:44.4379564Z             }
2026-06-22T02:04:44.4379904Z           ]
2026-06-22T02:04:44.4379989Z         }
2026-06-22T02:04:44.4380071Z       }
2026-06-22T02:04:44.4380148Z     },
2026-06-22T02:04:44.4380233Z     {
2026-06-22T02:04:44.4380323Z       "id": "REQ-UPD-1",
2026-06-22T02:04:44.4380453Z       "title": "Peer-propagated update over P2P",
2026-06-22T02:04:44.4380643Z       "requiredStages": [
2026-06-22T02:04:44.4380754Z         "impl",
2026-06-22T02:04:44.4380877Z         "unit",
2026-06-22T02:04:44.4381006Z         "int"
2026-06-22T02:04:44.4381130Z       ],
2026-06-22T02:04:44.4381254Z       "stages": {
2026-06-22T02:04:44.4381374Z         "doc": {
2026-06-22T02:04:44.4381473Z           "complete": false,
2026-06-22T02:04:44.4381568Z           "evidence": []
2026-06-22T02:04:44.4381640Z         },
2026-06-22T02:04:44.4381765Z         "impl": {
2026-06-22T02:04:44.4381858Z           "complete": true,
2026-06-22T02:04:44.4381955Z           "evidence": [
2026-06-22T02:04:44.4382046Z             {
2026-06-22T02:04:44.4382183Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4382277Z               "line": 28
2026-06-22T02:04:44.4382382Z             },
2026-06-22T02:04:44.4382467Z             {
2026-06-22T02:04:44.4382594Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4382685Z               "line": 103
2026-06-22T02:04:44.4382768Z             },
2026-06-22T02:04:44.4382847Z             {
2026-06-22T02:04:44.4382957Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4383044Z               "line": 342
2026-06-22T02:04:44.4383139Z             },
2026-06-22T02:04:44.4383229Z             {
2026-06-22T02:04:44.4383387Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4383477Z               "line": 22
2026-06-22T02:04:44.4383563Z             },
2026-06-22T02:04:44.4383644Z             {
2026-06-22T02:04:44.4383763Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4383848Z               "line": 207
2026-06-22T02:04:44.4383936Z             },
2026-06-22T02:04:44.4384026Z             {
2026-06-22T02:04:44.4384144Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4384241Z               "line": 283
2026-06-22T02:04:44.4384322Z             },
2026-06-22T02:04:44.4384411Z             {
2026-06-22T02:04:44.4384522Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4384613Z               "line": 340
2026-06-22T02:04:44.4384702Z             },
2026-06-22T02:04:44.4384783Z             {
2026-06-22T02:04:44.4384908Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.4384984Z               "line": 37
2026-06-22T02:04:44.4385068Z             }
2026-06-22T02:04:44.4385149Z           ]
2026-06-22T02:04:44.4385226Z         },
2026-06-22T02:04:44.4385313Z         "int": {
2026-06-22T02:04:44.4385411Z           "complete": true,
2026-06-22T02:04:44.4385497Z           "evidence": [
2026-06-22T02:04:44.4385585Z             {
2026-06-22T02:04:44.4385712Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:04:44.4385798Z               "line": 207
2026-06-22T02:04:44.4385885Z             },
2026-06-22T02:04:44.4385970Z             {
2026-06-22T02:04:44.4386084Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:04:44.4386185Z               "line": 1082
2026-06-22T02:04:44.4386266Z             }
2026-06-22T02:04:44.4386351Z           ]
2026-06-22T02:04:44.4386476Z         },
2026-06-22T02:04:44.4386567Z         "unit": {
2026-06-22T02:04:44.4386671Z           "complete": true,
2026-06-22T02:04:44.4386761Z           "evidence": [
2026-06-22T02:04:44.4392837Z             {
2026-06-22T02:04:44.4393022Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4393121Z               "line": 490
2026-06-22T02:04:44.4393203Z             },
2026-06-22T02:04:44.4393294Z             {
2026-06-22T02:04:44.4393417Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4393675Z               "line": 616
2026-06-22T02:04:44.4393760Z             },
2026-06-22T02:04:44.4393837Z             {
2026-06-22T02:04:44.4393971Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:04:44.4394065Z               "line": 277
2026-06-22T02:04:44.4394152Z             },
2026-06-22T02:04:44.4394323Z             {
2026-06-22T02:04:44.4394452Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.4394539Z               "line": 124
2026-06-22T02:04:44.4394624Z             },
2026-06-22T02:04:44.4394705Z             {
2026-06-22T02:04:44.4394830Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.4394919Z               "line": 200
2026-06-22T02:04:44.4395001Z             }
2026-06-22T02:04:44.4395077Z           ]
2026-06-22T02:04:44.4395159Z         }
2026-06-22T02:04:44.4395243Z       }
2026-06-22T02:04:44.4395320Z     },
2026-06-22T02:04:44.4395397Z     {
2026-06-22T02:04:44.4395497Z       "id": "REQ-UPD-2",
2026-06-22T02:04:44.4395652Z       "title": "All binaries signature-verified before handoff",
2026-06-22T02:04:44.4395752Z       "requiredStages": [
2026-06-22T02:04:44.4395835Z         "impl",
2026-06-22T02:04:44.4395920Z         "unit"
2026-06-22T02:04:44.4396000Z       ],
2026-06-22T02:04:44.4396087Z       "stages": {
2026-06-22T02:04:44.4396173Z         "doc": {
2026-06-22T02:04:44.4396272Z           "complete": false,
2026-06-22T02:04:44.4396367Z           "evidence": []
2026-06-22T02:04:44.4396450Z         },
2026-06-22T02:04:44.4396540Z         "impl": {
2026-06-22T02:04:44.4396639Z           "complete": true,
2026-06-22T02:04:44.4396731Z           "evidence": [
2026-06-22T02:04:44.4396826Z             {
2026-06-22T02:04:44.4396958Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4397051Z               "line": 343
2026-06-22T02:04:44.4397136Z             },
2026-06-22T02:04:44.4397227Z             {
2026-06-22T02:04:44.4397346Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4397446Z               "line": 476
2026-06-22T02:04:44.4397530Z             },
2026-06-22T02:04:44.4397617Z             {
2026-06-22T02:04:44.4397738Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4397822Z               "line": 29
2026-06-22T02:04:44.4397912Z             },
2026-06-22T02:04:44.4397993Z             {
2026-06-22T02:04:44.4398121Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4398257Z               "line": 271
2026-06-22T02:04:44.4398382Z             },
2026-06-22T02:04:44.4398482Z             {
2026-06-22T02:04:44.4398605Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4398692Z               "line": 288
2026-06-22T02:04:44.4398783Z             },
2026-06-22T02:04:44.4398858Z             {
2026-06-22T02:04:44.4399230Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4399322Z               "line": 408
2026-06-22T02:04:44.4399402Z             },
2026-06-22T02:04:44.4399482Z             {
2026-06-22T02:04:44.4399603Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4399693Z               "line": 558
2026-06-22T02:04:44.4399774Z             },
2026-06-22T02:04:44.4399850Z             {
2026-06-22T02:04:44.4399975Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4400098Z               "line": 155
2026-06-22T02:04:44.4400184Z             }
2026-06-22T02:04:44.4400266Z           ]
2026-06-22T02:04:44.4400355Z         },
2026-06-22T02:04:44.4400437Z         "int": {
2026-06-22T02:04:44.4400538Z           "complete": false,
2026-06-22T02:04:44.4400614Z           "evidence": []
2026-06-22T02:04:44.4400703Z         },
2026-06-22T02:04:44.4400784Z         "unit": {
2026-06-22T02:04:44.4400879Z           "complete": true,
2026-06-22T02:04:44.4400965Z           "evidence": [
2026-06-22T02:04:44.4401039Z             {
2026-06-22T02:04:44.4401162Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4401358Z               "line": 750
2026-06-22T02:04:44.4401453Z             },
2026-06-22T02:04:44.4401540Z             {
2026-06-22T02:04:44.4401655Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4401754Z               "line": 811
2026-06-22T02:04:44.4401831Z             },
2026-06-22T02:04:44.4402044Z             {
2026-06-22T02:04:44.4402208Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4402302Z               "line": 825
2026-06-22T02:04:44.4402388Z             },
2026-06-22T02:04:44.4402465Z             {
2026-06-22T02:04:44.4402574Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4402655Z               "line": 841
2026-06-22T02:04:44.4402745Z             },
2026-06-22T02:04:44.4402828Z             {
2026-06-22T02:04:44.4402936Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4403022Z               "line": 932
2026-06-22T02:04:44.4403104Z             },
2026-06-22T02:04:44.4403199Z             {
2026-06-22T02:04:44.4403350Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4403440Z               "line": 414
2026-06-22T02:04:44.4403517Z             },
2026-06-22T02:04:44.4403601Z             {
2026-06-22T02:04:44.4403714Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4403801Z               "line": 427
2026-06-22T02:04:44.4403888Z             },
2026-06-22T02:04:44.4403972Z             {
2026-06-22T02:04:44.4404102Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:04:44.4404183Z               "line": 410
2026-06-22T02:04:44.4404268Z             }
2026-06-22T02:04:44.4404354Z           ]
2026-06-22T02:04:44.4404441Z         }
2026-06-22T02:04:44.4404531Z       }
2026-06-22T02:04:44.4404611Z     },
2026-06-22T02:04:44.4404688Z     {
2026-06-22T02:04:44.4404779Z       "id": "REQ-UPD-3",
2026-06-22T02:04:44.4404959Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-22T02:04:44.4405061Z       "requiredStages": [
2026-06-22T02:04:44.4405141Z         "impl",
2026-06-22T02:04:44.4405222Z         "unit",
2026-06-22T02:04:44.4405307Z         "int"
2026-06-22T02:04:44.4405390Z       ],
2026-06-22T02:04:44.4405479Z       "stages": {
2026-06-22T02:04:44.4405565Z         "doc": {
2026-06-22T02:04:44.4405657Z           "complete": false,
2026-06-22T02:04:44.4405747Z           "evidence": []
2026-06-22T02:04:44.4405837Z         },
2026-06-22T02:04:44.4405923Z         "impl": {
2026-06-22T02:04:44.4406020Z           "complete": true,
2026-06-22T02:04:44.4406095Z           "evidence": [
2026-06-22T02:04:44.4406184Z             {
2026-06-22T02:04:44.4406308Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4406400Z               "line": 40
2026-06-22T02:04:44.4406489Z             },
2026-06-22T02:04:44.4406570Z             {
2026-06-22T02:04:44.4406695Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4406781Z               "line": 87
2026-06-22T02:04:44.4406875Z             },
2026-06-22T02:04:44.4406957Z             {
2026-06-22T02:04:44.4407072Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4407166Z               "line": 1136
2026-06-22T02:04:44.4407252Z             },
2026-06-22T02:04:44.4407329Z             {
2026-06-22T02:04:44.4407443Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.4407533Z               "line": 1895
2026-06-22T02:04:44.4407616Z             },
2026-06-22T02:04:44.4407706Z             {
2026-06-22T02:04:44.4407820Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4407896Z               "line": 26
2026-06-22T02:04:44.4407983Z             },
2026-06-22T02:04:44.4408067Z             {
2026-06-22T02:04:44.4408172Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4408255Z               "line": 114
2026-06-22T02:04:44.4408340Z             },
2026-06-22T02:04:44.4408429Z             {
2026-06-22T02:04:44.4408629Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4408718Z               "line": 246
2026-06-22T02:04:44.4408798Z             },
2026-06-22T02:04:44.4408889Z             {
2026-06-22T02:04:44.4409290Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4409408Z               "line": 2442
2026-06-22T02:04:44.4409662Z             }
2026-06-22T02:04:44.4409747Z           ]
2026-06-22T02:04:44.4409834Z         },
2026-06-22T02:04:44.4409920Z         "int": {
2026-06-22T02:04:44.4410019Z           "complete": true,
2026-06-22T02:04:44.4410119Z           "evidence": [
2026-06-22T02:04:44.4410201Z             {
2026-06-22T02:04:44.4410320Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:04:44.4410405Z               "line": 58
2026-06-22T02:04:44.4410487Z             }
2026-06-22T02:04:44.4410568Z           ]
2026-06-22T02:04:44.4410648Z         },
2026-06-22T02:04:44.4410729Z         "unit": {
2026-06-22T02:04:44.4410816Z           "complete": true,
2026-06-22T02:04:44.4410897Z           "evidence": [
2026-06-22T02:04:44.4410987Z             {
2026-06-22T02:04:44.4411117Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4411198Z               "line": 532
2026-06-22T02:04:44.4411287Z             },
2026-06-22T02:04:44.4411377Z             {
2026-06-22T02:04:44.4411496Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4411585Z               "line": 585
2026-06-22T02:04:44.4411665Z             },
2026-06-22T02:04:44.4411752Z             {
2026-06-22T02:04:44.4411876Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4411965Z               "line": 653
2026-06-22T02:04:44.4412037Z             },
2026-06-22T02:04:44.4412115Z             {
2026-06-22T02:04:44.4412234Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:04:44.4412323Z               "line": 1102
2026-06-22T02:04:44.4412405Z             },
2026-06-22T02:04:44.4412491Z             {
2026-06-22T02:04:44.4412619Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4412705Z               "line": 271
2026-06-22T02:04:44.4412787Z             },
2026-06-22T02:04:44.4412877Z             {
2026-06-22T02:04:44.4412982Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4413078Z               "line": 295
2026-06-22T02:04:44.4413158Z             },
2026-06-22T02:04:44.4413239Z             {
2026-06-22T02:04:44.4413355Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4413445Z               "line": 316
2026-06-22T02:04:44.4413529Z             },
2026-06-22T02:04:44.4413602Z             {
2026-06-22T02:04:44.4413727Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4413806Z               "line": 332
2026-06-22T02:04:44.4413901Z             }
2026-06-22T02:04:44.4413987Z           ]
2026-06-22T02:04:44.4414068Z         }
2026-06-22T02:04:44.4414156Z       }
2026-06-22T02:04:44.4414242Z     },
2026-06-22T02:04:44.4414318Z     {
2026-06-22T02:04:44.4414400Z       "id": "REQ-UPD-4",
2026-06-22T02:04:44.4414589Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-22T02:04:44.4414691Z       "requiredStages": [
2026-06-22T02:04:44.4414777Z         "impl",
2026-06-22T02:04:44.4414861Z         "unit"
2026-06-22T02:04:44.4414943Z       ],
2026-06-22T02:04:44.4415024Z       "stages": {
2026-06-22T02:04:44.4415105Z         "doc": {
2026-06-22T02:04:44.4415200Z           "complete": false,
2026-06-22T02:04:44.4415287Z           "evidence": []
2026-06-22T02:04:44.4415372Z         },
2026-06-22T02:04:44.4415463Z         "impl": {
2026-06-22T02:04:44.4415553Z           "complete": true,
2026-06-22T02:04:44.4415650Z           "evidence": [
2026-06-22T02:04:44.4415734Z             {
2026-06-22T02:04:44.4415863Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4415950Z               "line": 41
2026-06-22T02:04:44.4416030Z             },
2026-06-22T02:04:44.4416241Z             {
2026-06-22T02:04:44.4416363Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4416459Z               "line": 88
2026-06-22T02:04:44.4416546Z             },
2026-06-22T02:04:44.4416636Z             {
2026-06-22T02:04:44.4416764Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:04:44.4416921Z               "line": 23
2026-06-22T02:04:44.4417007Z             },
2026-06-22T02:04:44.4417092Z             {
2026-06-22T02:04:44.4417207Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:04:44.4417293Z               "line": 56
2026-06-22T02:04:44.4417374Z             },
2026-06-22T02:04:44.4417459Z             {
2026-06-22T02:04:44.4417570Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:04:44.4417655Z               "line": 77
2026-06-22T02:04:44.4417736Z             },
2026-06-22T02:04:44.4417822Z             {
2026-06-22T02:04:44.4417932Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:04:44.4418022Z               "line": 236
2026-06-22T02:04:44.4418112Z             },
2026-06-22T02:04:44.4418195Z             {
2026-06-22T02:04:44.4418308Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:04:44.4418389Z               "line": 108
2026-06-22T02:04:44.4418476Z             },
2026-06-22T02:04:44.4418566Z             {
2026-06-22T02:04:44.4418675Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.4418761Z               "line": 270
2026-06-22T02:04:44.4418843Z             },
2026-06-22T02:04:44.4418928Z             {
2026-06-22T02:04:44.4419142Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4419241Z               "line": 2441
2026-06-22T02:04:44.4419334Z             }
2026-06-22T02:04:44.4419411Z           ]
2026-06-22T02:04:44.4419502Z         },
2026-06-22T02:04:44.4419588Z         "int": {
2026-06-22T02:04:44.4419687Z           "complete": false,
2026-06-22T02:04:44.4419764Z           "evidence": []
2026-06-22T02:04:44.4419855Z         },
2026-06-22T02:04:44.4419936Z         "unit": {
2026-06-22T02:04:44.4420030Z           "complete": true,
2026-06-22T02:04:44.4420122Z           "evidence": [
2026-06-22T02:04:44.4420203Z             {
2026-06-22T02:04:44.4420326Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4420413Z               "line": 581
2026-06-22T02:04:44.4420494Z             },
2026-06-22T02:04:44.4420575Z             {
2026-06-22T02:04:44.4420694Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4420785Z               "line": 706
2026-06-22T02:04:44.4420870Z             },
2026-06-22T02:04:44.4420955Z             {
2026-06-22T02:04:44.4421066Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:04:44.4421161Z               "line": 384
2026-06-22T02:04:44.4421238Z             },
2026-06-22T02:04:44.4421324Z             {
2026-06-22T02:04:44.4421439Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:04:44.4421523Z               "line": 102
2026-06-22T02:04:44.4421609Z             },
2026-06-22T02:04:44.4421692Z             {
2026-06-22T02:04:44.4421800Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:04:44.4421889Z               "line": 123
2026-06-22T02:04:44.4421965Z             },
2026-06-22T02:04:44.4422051Z             {
2026-06-22T02:04:44.4422169Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:04:44.4422254Z               "line": 142
2026-06-22T02:04:44.4422336Z             },
2026-06-22T02:04:44.4422422Z             {
2026-06-22T02:04:44.4422540Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:04:44.4422621Z               "line": 582
2026-06-22T02:04:44.4422713Z             },
2026-06-22T02:04:44.4422799Z             {
2026-06-22T02:04:44.4422912Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:04:44.4422994Z               "line": 566
2026-06-22T02:04:44.4423084Z             },
2026-06-22T02:04:44.4423270Z             {
2026-06-22T02:04:44.4423366Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4423452Z               "line": 8256
2026-06-22T02:04:44.4423537Z             }
2026-06-22T02:04:44.4423619Z           ]
2026-06-22T02:04:44.4423700Z         }
2026-06-22T02:04:44.4423780Z       }
2026-06-22T02:04:44.4423958Z     },
2026-06-22T02:04:44.4424042Z     {
2026-06-22T02:04:44.4424147Z       "id": "REQ-UPD-5",
2026-06-22T02:04:44.4424287Z       "title": "spt-core ripple-updates registered adapters",
2026-06-22T02:04:44.4424385Z       "requiredStages": [
2026-06-22T02:04:44.4424466Z         "impl",
2026-06-22T02:04:44.4424552Z         "unit"
2026-06-22T02:04:44.4424638Z       ],
2026-06-22T02:04:44.4424716Z       "stages": {
2026-06-22T02:04:44.4424816Z         "doc": {
2026-06-22T02:04:44.4424907Z           "complete": false,
2026-06-22T02:04:44.4424999Z           "evidence": []
2026-06-22T02:04:44.4425078Z         },
2026-06-22T02:04:44.4425169Z         "impl": {
2026-06-22T02:04:44.4425270Z           "complete": true,
2026-06-22T02:04:44.4425342Z           "evidence": [
2026-06-22T02:04:44.4425436Z             {
2026-06-22T02:04:44.4425566Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4425661Z               "line": 27
2026-06-22T02:04:44.4425746Z             },
2026-06-22T02:04:44.4425837Z             {
2026-06-22T02:04:44.4425965Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4426051Z               "line": 87
2026-06-22T02:04:44.4426142Z             },
2026-06-22T02:04:44.4426224Z             {
2026-06-22T02:04:44.4426352Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4426437Z               "line": 145
2026-06-22T02:04:44.4426525Z             },
2026-06-22T02:04:44.4426609Z             {
2026-06-22T02:04:44.4426724Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4426820Z               "line": 492
2026-06-22T02:04:44.4426905Z             },
2026-06-22T02:04:44.4426995Z             {
2026-06-22T02:04:44.4427116Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4427201Z               "line": 546
2026-06-22T02:04:44.4427285Z             }
2026-06-22T02:04:44.4427370Z           ]
2026-06-22T02:04:44.4427457Z         },
2026-06-22T02:04:44.4427544Z         "int": {
2026-06-22T02:04:44.4427633Z           "complete": false,
2026-06-22T02:04:44.4427728Z           "evidence": []
2026-06-22T02:04:44.4427810Z         },
2026-06-22T02:04:44.4427891Z         "unit": {
2026-06-22T02:04:44.4427976Z           "complete": true,
2026-06-22T02:04:44.4428067Z           "evidence": [
2026-06-22T02:04:44.4428149Z             {
2026-06-22T02:04:44.4428272Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4428368Z               "line": 272
2026-06-22T02:04:44.4428450Z             },
2026-06-22T02:04:44.4428539Z             {
2026-06-22T02:04:44.4428658Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4428745Z               "line": 286
2026-06-22T02:04:44.4428830Z             },
2026-06-22T02:04:44.4428921Z             {
2026-06-22T02:04:44.4429126Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4429207Z               "line": 300
2026-06-22T02:04:44.4429288Z             },
2026-06-22T02:04:44.4429375Z             {
2026-06-22T02:04:44.4429507Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4429597Z               "line": 314
2026-06-22T02:04:44.4429682Z             },
2026-06-22T02:04:44.4429768Z             {
2026-06-22T02:04:44.4429895Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4429985Z               "line": 348
2026-06-22T02:04:44.4430062Z             },
2026-06-22T02:04:44.4430144Z             {
2026-06-22T02:04:44.4430266Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4430353Z               "line": 1071
2026-06-22T02:04:44.4430538Z             }
2026-06-22T02:04:44.4430615Z           ]
2026-06-22T02:04:44.4430701Z         }
2026-06-22T02:04:44.4430787Z       }
2026-06-22T02:04:44.4430872Z     },
2026-06-22T02:04:44.4430954Z     {
2026-06-22T02:04:44.4431054Z       "id": "REQ-UPD-6",
2026-06-22T02:04:44.4431864Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-22T02:04:44.4432045Z       "requiredStages": [
2026-06-22T02:04:44.4432141Z         "doc",
2026-06-22T02:04:44.4432218Z         "impl",
2026-06-22T02:04:44.4432309Z         "unit",
2026-06-22T02:04:44.4432393Z         "int"
2026-06-22T02:04:44.4432478Z       ],
2026-06-22T02:04:44.4432564Z       "stages": {
2026-06-22T02:04:44.4432649Z         "doc": {
2026-06-22T02:04:44.4432748Z           "complete": true,
2026-06-22T02:04:44.4432824Z           "evidence": [
2026-06-22T02:04:44.4432915Z             {
2026-06-22T02:04:44.4433058Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:04:44.4433143Z               "line": 3
2026-06-22T02:04:44.4433230Z             },
2026-06-22T02:04:44.4433311Z             {
2026-06-22T02:04:44.4433429Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-22T02:04:44.4433511Z               "line": 3
2026-06-22T02:04:44.4433597Z             },
2026-06-22T02:04:44.4433688Z             {
2026-06-22T02:04:44.4433845Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-22T02:04:44.4433931Z               "line": 3
2026-06-22T02:04:44.4434012Z             }
2026-06-22T02:04:44.4434092Z           ]
2026-06-22T02:04:44.4434174Z         },
2026-06-22T02:04:44.4434260Z         "impl": {
2026-06-22T02:04:44.4434360Z           "complete": true,
2026-06-22T02:04:44.4434441Z           "evidence": [
2026-06-22T02:04:44.4434532Z             {
2026-06-22T02:04:44.4434659Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4434756Z               "line": 76
2026-06-22T02:04:44.4434837Z             },
2026-06-22T02:04:44.4434922Z             {
2026-06-22T02:04:44.4435050Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4435136Z               "line": 212
2026-06-22T02:04:44.4435221Z             },
2026-06-22T02:04:44.4435305Z             {
2026-06-22T02:04:44.4435429Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4435511Z               "line": 69
2026-06-22T02:04:44.4435606Z             },
2026-06-22T02:04:44.4435686Z             {
2026-06-22T02:04:44.4435802Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4435897Z               "line": 133
2026-06-22T02:04:44.4435981Z             },
2026-06-22T02:04:44.4436073Z             {
2026-06-22T02:04:44.4436187Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4436282Z               "line": 243
2026-06-22T02:04:44.4436378Z             },
2026-06-22T02:04:44.4436465Z             {
2026-06-22T02:04:44.4436583Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4436664Z               "line": 406
2026-06-22T02:04:44.4436751Z             },
2026-06-22T02:04:44.4436840Z             {
2026-06-22T02:04:44.4436950Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4437042Z               "line": 534
2026-06-22T02:04:44.4437127Z             },
2026-06-22T02:04:44.4437207Z             {
2026-06-22T02:04:44.4437322Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4437409Z               "line": 548
2026-06-22T02:04:44.4437493Z             },
2026-06-22T02:04:44.4437565Z             {
2026-06-22T02:04:44.4437681Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4437766Z               "line": 603
2026-06-22T02:04:44.4437860Z             },
2026-06-22T02:04:44.4438046Z             {
2026-06-22T02:04:44.4438174Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4438269Z               "line": 634
2026-06-22T02:04:44.4438351Z             },
2026-06-22T02:04:44.4438437Z             {
2026-06-22T02:04:44.4438565Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:04:44.4438723Z               "line": 137
2026-06-22T02:04:44.4438804Z             },
2026-06-22T02:04:44.4438894Z             {
2026-06-22T02:04:44.4439095Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:04:44.4439180Z               "line": 184
2026-06-22T02:04:44.4439267Z             },
2026-06-22T02:04:44.4439348Z             {
2026-06-22T02:04:44.4439471Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4439562Z               "line": 78
2026-06-22T02:04:44.4439644Z             },
2026-06-22T02:04:44.4439733Z             {
2026-06-22T02:04:44.4439848Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4439940Z               "line": 114
2026-06-22T02:04:44.4440015Z             },
2026-06-22T02:04:44.4440096Z             {
2026-06-22T02:04:44.4440214Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4440305Z               "line": 185
2026-06-22T02:04:44.4440393Z             },
2026-06-22T02:04:44.4440474Z             {
2026-06-22T02:04:44.4440594Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4440685Z               "line": 260
2026-06-22T02:04:44.4440770Z             },
2026-06-22T02:04:44.4440846Z             {
2026-06-22T02:04:44.4440961Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4441051Z               "line": 292
2026-06-22T02:04:44.4441131Z             },
2026-06-22T02:04:44.4441204Z             {
2026-06-22T02:04:44.4441319Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4441408Z               "line": 323
2026-06-22T02:04:44.4441500Z             },
2026-06-22T02:04:44.4441571Z             {
2026-06-22T02:04:44.4441695Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4441785Z               "line": 346
2026-06-22T02:04:44.4441863Z             },
2026-06-22T02:04:44.4441943Z             {
2026-06-22T02:04:44.4442076Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4442163Z               "line": 388
2026-06-22T02:04:44.4442244Z             },
2026-06-22T02:04:44.4442329Z             {
2026-06-22T02:04:44.4442444Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4442539Z               "line": 398
2026-06-22T02:04:44.4442615Z             },
2026-06-22T02:04:44.4442696Z             {
2026-06-22T02:04:44.4442807Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4442892Z               "line": 410
2026-06-22T02:04:44.4442977Z             },
2026-06-22T02:04:44.4443062Z             {
2026-06-22T02:04:44.4443186Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4443275Z               "line": 420
2026-06-22T02:04:44.4443374Z             },
2026-06-22T02:04:44.4443456Z             {
2026-06-22T02:04:44.4443566Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4443656Z               "line": 439
2026-06-22T02:04:44.4443741Z             },
2026-06-22T02:04:44.4443828Z             {
2026-06-22T02:04:44.4443928Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4444018Z               "line": 449
2026-06-22T02:04:44.4444110Z             },
2026-06-22T02:04:44.4444186Z             {
2026-06-22T02:04:44.4444309Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4444395Z               "line": 94
2026-06-22T02:04:44.4444491Z             },
2026-06-22T02:04:44.4444572Z             {
2026-06-22T02:04:44.4444686Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4444768Z               "line": 120
2026-06-22T02:04:44.4444948Z             },
2026-06-22T02:04:44.4445035Z             {
2026-06-22T02:04:44.4445149Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4445239Z               "line": 135
2026-06-22T02:04:44.4445321Z             },
2026-06-22T02:04:44.4445407Z             {
2026-06-22T02:04:44.4445619Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4445701Z               "line": 162
2026-06-22T02:04:44.4445786Z             },
2026-06-22T02:04:44.4445865Z             {
2026-06-22T02:04:44.4445984Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4446071Z               "line": 174
2026-06-22T02:04:44.4446157Z             },
2026-06-22T02:04:44.4446241Z             {
2026-06-22T02:04:44.4446352Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4446447Z               "line": 185
2026-06-22T02:04:44.4446532Z             },
2026-06-22T02:04:44.4446613Z             {
2026-06-22T02:04:44.4446738Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4446828Z               "line": 451
2026-06-22T02:04:44.4446914Z             },
2026-06-22T02:04:44.4446996Z             {
2026-06-22T02:04:44.4447114Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4447200Z               "line": 573
2026-06-22T02:04:44.4447292Z             },
2026-06-22T02:04:44.4447382Z             {
2026-06-22T02:04:44.4447495Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4447582Z               "line": 171
2026-06-22T02:04:44.4447659Z             },
2026-06-22T02:04:44.4447739Z             {
2026-06-22T02:04:44.4447853Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.4447940Z               "line": 65
2026-06-22T02:04:44.4448030Z             },
2026-06-22T02:04:44.4448106Z             {
2026-06-22T02:04:44.4448222Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.4448303Z               "line": 71
2026-06-22T02:04:44.4448396Z             },
2026-06-22T02:04:44.4448482Z             {
2026-06-22T02:04:44.4448601Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:04:44.4448679Z               "line": 77
2026-06-22T02:04:44.4448763Z             },
2026-06-22T02:04:44.4448848Z             {
2026-06-22T02:04:44.4449036Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4449125Z               "line": 778
2026-06-22T02:04:44.4449212Z             },
2026-06-22T02:04:44.4449293Z             {
2026-06-22T02:04:44.4449401Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4449478Z               "line": 795
2026-06-22T02:04:44.4449565Z             },
2026-06-22T02:04:44.4449645Z             {
2026-06-22T02:04:44.4449750Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4449832Z               "line": 838
2026-06-22T02:04:44.4449918Z             },
2026-06-22T02:04:44.4450008Z             {
2026-06-22T02:04:44.4450112Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4450200Z               "line": 981
2026-06-22T02:04:44.4450284Z             },
2026-06-22T02:04:44.4450374Z             {
2026-06-22T02:04:44.4450481Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4450571Z               "line": 1131
2026-06-22T02:04:44.4450651Z             }
2026-06-22T02:04:44.4450736Z           ]
2026-06-22T02:04:44.4450817Z         },
2026-06-22T02:04:44.4450888Z         "int": {
2026-06-22T02:04:44.4450987Z           "complete": true,
2026-06-22T02:04:44.4451072Z           "evidence": [
2026-06-22T02:04:44.4451154Z             {
2026-06-22T02:04:44.4451282Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:04:44.4451363Z               "line": 569
2026-06-22T02:04:44.4451449Z             },
2026-06-22T02:04:44.4451536Z             {
2026-06-22T02:04:44.4451654Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:04:44.4451745Z               "line": 135
2026-06-22T02:04:44.4451926Z             }
2026-06-22T02:04:44.4452011Z           ]
2026-06-22T02:04:44.4452094Z         },
2026-06-22T02:04:44.4452179Z         "unit": {
2026-06-22T02:04:44.4452269Z           "complete": true,
2026-06-22T02:04:44.4452364Z           "evidence": [
2026-06-22T02:04:44.4452442Z             {
2026-06-22T02:04:44.4452665Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4452752Z               "line": 626
2026-06-22T02:04:44.4452841Z             },
2026-06-22T02:04:44.4452932Z             {
2026-06-22T02:04:44.4453048Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4453133Z               "line": 675
2026-06-22T02:04:44.4453223Z             },
2026-06-22T02:04:44.4453304Z             {
2026-06-22T02:04:44.4453420Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:04:44.4453508Z               "line": 696
2026-06-22T02:04:44.4453589Z             },
2026-06-22T02:04:44.4453674Z             {
2026-06-22T02:04:44.4453797Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4453887Z               "line": 513
2026-06-22T02:04:44.4453973Z             },
2026-06-22T02:04:44.4454054Z             {
2026-06-22T02:04:44.4454168Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4454263Z               "line": 638
2026-06-22T02:04:44.4454346Z             },
2026-06-22T02:04:44.4454426Z             {
2026-06-22T02:04:44.4454550Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4454631Z               "line": 675
2026-06-22T02:04:44.4454713Z             },
2026-06-22T02:04:44.4454784Z             {
2026-06-22T02:04:44.4454897Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4454985Z               "line": 947
2026-06-22T02:04:44.4455060Z             },
2026-06-22T02:04:44.4455146Z             {
2026-06-22T02:04:44.4455256Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4455342Z               "line": 969
2026-06-22T02:04:44.4455423Z             },
2026-06-22T02:04:44.4455504Z             {
2026-06-22T02:04:44.4455615Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4455709Z               "line": 986
2026-06-22T02:04:44.4455784Z             },
2026-06-22T02:04:44.4455861Z             {
2026-06-22T02:04:44.4459428Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4459543Z               "line": 1001
2026-06-22T02:04:44.4459628Z             },
2026-06-22T02:04:44.4459714Z             {
2026-06-22T02:04:44.4459853Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4459943Z               "line": 1027
2026-06-22T02:04:44.4460024Z             },
2026-06-22T02:04:44.4460106Z             {
2026-06-22T02:04:44.4460234Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:04:44.4460334Z               "line": 457
2026-06-22T02:04:44.4460416Z             },
2026-06-22T02:04:44.4460502Z             {
2026-06-22T02:04:44.4460653Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:04:44.4460740Z               "line": 338
2026-06-22T02:04:44.4460826Z             },
2026-06-22T02:04:44.4460901Z             {
2026-06-22T02:04:44.4461006Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4461099Z               "line": 10549
2026-06-22T02:04:44.4461182Z             },
2026-06-22T02:04:44.4461268Z             {
2026-06-22T02:04:44.4461377Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4461463Z               "line": 1260
2026-06-22T02:04:44.4461547Z             },
2026-06-22T02:04:44.4461627Z             {
2026-06-22T02:04:44.4461747Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:04:44.4461838Z               "line": 130
2026-06-22T02:04:44.4461923Z             }
2026-06-22T02:04:44.4462005Z           ]
2026-06-22T02:04:44.4462096Z         }
2026-06-22T02:04:44.4462176Z       }
2026-06-22T02:04:44.4462262Z     },
2026-06-22T02:04:44.4462344Z     {
2026-06-22T02:04:44.4462562Z       "id": "REQ-UPD-7",
2026-06-22T02:04:44.4464696Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-22T02:04:44.4464911Z       "requiredStages": [
2026-06-22T02:04:44.4465001Z         "impl",
2026-06-22T02:04:44.4465086Z         "unit"
2026-06-22T02:04:44.4465157Z       ],
2026-06-22T02:04:44.4465244Z       "stages": {
2026-06-22T02:04:44.4465320Z         "doc": {
2026-06-22T02:04:44.4465429Z           "complete": false,
2026-06-22T02:04:44.4465520Z           "evidence": []
2026-06-22T02:04:44.4465606Z         },
2026-06-22T02:04:44.4465692Z         "impl": {
2026-06-22T02:04:44.4465777Z           "complete": true,
2026-06-22T02:04:44.4465865Z           "evidence": [
2026-06-22T02:04:44.4465949Z             {
2026-06-22T02:04:44.4466059Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4466145Z               "line": 2626
2026-06-22T02:04:44.4466231Z             }
2026-06-22T02:04:44.4466316Z           ]
2026-06-22T02:04:44.4466402Z         },
2026-06-22T02:04:44.4466475Z         "int": {
2026-06-22T02:04:44.4466575Z           "complete": false,
2026-06-22T02:04:44.4466669Z           "evidence": []
2026-06-22T02:04:44.4466754Z         },
2026-06-22T02:04:44.4466840Z         "unit": {
2026-06-22T02:04:44.4466934Z           "complete": true,
2026-06-22T02:04:44.4467018Z           "evidence": [
2026-06-22T02:04:44.4467104Z             {
2026-06-22T02:04:44.4467215Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4467310Z               "line": 10525
2026-06-22T02:04:44.4467400Z             }
2026-06-22T02:04:44.4467482Z           ]
2026-06-22T02:04:44.4467567Z         }
2026-06-22T02:04:44.4467653Z       }
2026-06-22T02:04:44.4467724Z     },
2026-06-22T02:04:44.4467811Z     {
2026-06-22T02:04:44.4467911Z       "id": "REQ-UPD-8",
2026-06-22T02:04:44.4470441Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-22T02:04:44.4470546Z       "requiredStages": [
2026-06-22T02:04:44.4470632Z         "impl",
2026-06-22T02:04:44.4470714Z         "unit"
2026-06-22T02:04:44.4470794Z       ],
2026-06-22T02:04:44.4470884Z       "stages": {
2026-06-22T02:04:44.4470962Z         "doc": {
2026-06-22T02:04:44.4471062Z           "complete": false,
2026-06-22T02:04:44.4471143Z           "evidence": []
2026-06-22T02:04:44.4471228Z         },
2026-06-22T02:04:44.4471315Z         "impl": {
2026-06-22T02:04:44.4471405Z           "complete": true,
2026-06-22T02:04:44.4471500Z           "evidence": [
2026-06-22T02:04:44.4471581Z             {
2026-06-22T02:04:44.4471701Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4471884Z               "line": 77
2026-06-22T02:04:44.4471956Z             },
2026-06-22T02:04:44.4472046Z             {
2026-06-22T02:04:44.4472164Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4472245Z               "line": 49
2026-06-22T02:04:44.4472313Z             },
2026-06-22T02:04:44.4472488Z             {
2026-06-22T02:04:44.4472608Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4472699Z               "line": 152
2026-06-22T02:04:44.4472783Z             },
2026-06-22T02:04:44.4472870Z             {
2026-06-22T02:04:44.4472994Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4473079Z               "line": 215
2026-06-22T02:04:44.4473165Z             },
2026-06-22T02:04:44.4473247Z             {
2026-06-22T02:04:44.4473362Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4473441Z               "line": 230
2026-06-22T02:04:44.4473524Z             },
2026-06-22T02:04:44.4473614Z             {
2026-06-22T02:04:44.4473723Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4473814Z               "line": 247
2026-06-22T02:04:44.4473896Z             },
2026-06-22T02:04:44.4473980Z             {
2026-06-22T02:04:44.4474090Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4474172Z               "line": 269
2026-06-22T02:04:44.4474258Z             },
2026-06-22T02:04:44.4474338Z             {
2026-06-22T02:04:44.4474459Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4474550Z               "line": 66
2026-06-22T02:04:44.4474633Z             },
2026-06-22T02:04:44.4474714Z             {
2026-06-22T02:04:44.4474828Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4474909Z               "line": 154
2026-06-22T02:04:44.4474983Z             },
2026-06-22T02:04:44.4475059Z             {
2026-06-22T02:04:44.4475170Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4475256Z               "line": 2430
2026-06-22T02:04:44.4475336Z             },
2026-06-22T02:04:44.4475417Z             {
2026-06-22T02:04:44.4475513Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4475599Z               "line": 2493
2026-06-22T02:04:44.4475684Z             },
2026-06-22T02:04:44.4475776Z             {
2026-06-22T02:04:44.4475875Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4475960Z               "line": 2503
2026-06-22T02:04:44.4476047Z             },
2026-06-22T02:04:44.4476124Z             {
2026-06-22T02:04:44.4476223Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4476309Z               "line": 2510
2026-06-22T02:04:44.4476395Z             },
2026-06-22T02:04:44.4476472Z             {
2026-06-22T02:04:44.4476585Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4476676Z               "line": 2627
2026-06-22T02:04:44.4476763Z             },
2026-06-22T02:04:44.4476843Z             {
2026-06-22T02:04:44.4476958Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4477049Z               "line": 480
2026-06-22T02:04:44.4477130Z             },
2026-06-22T02:04:44.4477215Z             {
2026-06-22T02:04:44.4477328Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:04:44.4477433Z               "line": 494
2026-06-22T02:04:44.4477522Z             }
2026-06-22T02:04:44.4477611Z           ]
2026-06-22T02:04:44.4477693Z         },
2026-06-22T02:04:44.4477780Z         "int": {
2026-06-22T02:04:44.4477875Z           "complete": false,
2026-06-22T02:04:44.4477960Z           "evidence": []
2026-06-22T02:04:44.4478051Z         },
2026-06-22T02:04:44.4478137Z         "unit": {
2026-06-22T02:04:44.4478237Z           "complete": true,
2026-06-22T02:04:44.4478323Z           "evidence": [
2026-06-22T02:04:44.4478404Z             {
2026-06-22T02:04:44.4478532Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:04:44.4478614Z               "line": 476
2026-06-22T02:04:44.4478695Z             },
2026-06-22T02:04:44.4478856Z             {
2026-06-22T02:04:44.4479034Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:04:44.4479124Z               "line": 580
2026-06-22T02:04:44.4479191Z             },
2026-06-22T02:04:44.4479282Z             {
2026-06-22T02:04:44.4479386Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4479573Z               "line": 10527
2026-06-22T02:04:44.4479654Z             },
2026-06-22T02:04:44.4479738Z             {
2026-06-22T02:04:44.4479839Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4479921Z               "line": 10549
2026-06-22T02:04:44.4480007Z             }
2026-06-22T02:04:44.4480091Z           ]
2026-06-22T02:04:44.4480171Z         }
2026-06-22T02:04:44.4480253Z       }
2026-06-22T02:04:44.4480330Z     },
2026-06-22T02:04:44.4480410Z     {
2026-06-22T02:04:44.4480491Z       "id": "REQ-UPD-9",
2026-06-22T02:04:44.4483014Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-22T02:04:44.4483120Z       "requiredStages": [
2026-06-22T02:04:44.4483211Z         "doc",
2026-06-22T02:04:44.4483287Z         "impl",
2026-06-22T02:04:44.4483363Z         "unit"
2026-06-22T02:04:44.4483440Z       ],
2026-06-22T02:04:44.4483526Z       "stages": {
2026-06-22T02:04:44.4483611Z         "doc": {
2026-06-22T02:04:44.4483701Z           "complete": true,
2026-06-22T02:04:44.4483783Z           "evidence": [
2026-06-22T02:04:44.4483869Z             {
2026-06-22T02:04:44.4483968Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.4484059Z               "line": 93
2026-06-22T02:04:44.4484136Z             },
2026-06-22T02:04:44.4484216Z             {
2026-06-22T02:04:44.4484321Z               "path": "docs/MANIFEST.md",
2026-06-22T02:04:44.4484408Z               "line": 285
2026-06-22T02:04:44.4484494Z             }
2026-06-22T02:04:44.4484564Z           ]
2026-06-22T02:04:44.4484645Z         },
2026-06-22T02:04:44.4484728Z         "impl": {
2026-06-22T02:04:44.4484809Z           "complete": true,
2026-06-22T02:04:44.4484903Z           "evidence": [
2026-06-22T02:04:44.4484985Z             {
2026-06-22T02:04:44.4485124Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4485203Z               "line": 128
2026-06-22T02:04:44.4485288Z             },
2026-06-22T02:04:44.4485379Z             {
2026-06-22T02:04:44.4485492Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4485581Z               "line": 533
2026-06-22T02:04:44.4485663Z             },
2026-06-22T02:04:44.4485749Z             {
2026-06-22T02:04:44.4485872Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4485953Z               "line": 459
2026-06-22T02:04:44.4486045Z             },
2026-06-22T02:04:44.4486121Z             {
2026-06-22T02:04:44.4486244Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4486336Z               "line": 505
2026-06-22T02:04:44.4486421Z             },
2026-06-22T02:04:44.4486502Z             {
2026-06-22T02:04:44.4486626Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4486713Z               "line": 928
2026-06-22T02:04:44.4486798Z             },
2026-06-22T02:04:44.4486985Z             {
2026-06-22T02:04:44.4487103Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:04:44.4487184Z               "line": 302
2026-06-22T02:04:44.4487256Z             },
2026-06-22T02:04:44.4487343Z             {
2026-06-22T02:04:44.4487450Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4487604Z               "line": 5675
2026-06-22T02:04:44.4487690Z             },
2026-06-22T02:04:44.4487760Z             {
2026-06-22T02:04:44.4487869Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4487965Z               "line": 5720
2026-06-22T02:04:44.4488044Z             },
2026-06-22T02:04:44.4488134Z             {
2026-06-22T02:04:44.4488234Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4488311Z               "line": 5857
2026-06-22T02:04:44.4488397Z             },
2026-06-22T02:04:44.4488482Z             {
2026-06-22T02:04:44.4488583Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4488664Z               "line": 5878
2026-06-22T02:04:44.4488754Z             },
2026-06-22T02:04:44.4488835Z             {
2026-06-22T02:04:44.4488936Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4489102Z               "line": 5901
2026-06-22T02:04:44.4489184Z             },
2026-06-22T02:04:44.4489270Z             {
2026-06-22T02:04:44.4489369Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4489455Z               "line": 5928
2026-06-22T02:04:44.4489537Z             }
2026-06-22T02:04:44.4489617Z           ]
2026-06-22T02:04:44.4489693Z         },
2026-06-22T02:04:44.4489774Z         "int": {
2026-06-22T02:04:44.4489857Z           "complete": false,
2026-06-22T02:04:44.4489946Z           "evidence": []
2026-06-22T02:04:44.4490018Z         },
2026-06-22T02:04:44.4490103Z         "unit": {
2026-06-22T02:04:44.4490201Z           "complete": true,
2026-06-22T02:04:44.4490280Z           "evidence": [
2026-06-22T02:04:44.4490361Z             {
2026-06-22T02:04:44.4490486Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:04:44.4490571Z               "line": 259
2026-06-22T02:04:44.4490656Z             },
2026-06-22T02:04:44.4490741Z             {
2026-06-22T02:04:44.4490861Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:04:44.4490947Z               "line": 657
2026-06-22T02:04:44.4491023Z             },
2026-06-22T02:04:44.4491113Z             {
2026-06-22T02:04:44.4491219Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:04:44.4491309Z               "line": 1107
2026-06-22T02:04:44.4491389Z             },
2026-06-22T02:04:44.4491467Z             {
2026-06-22T02:04:44.4491567Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4491652Z               "line": 7565
2026-06-22T02:04:44.4491738Z             }
2026-06-22T02:04:44.4491820Z           ]
2026-06-22T02:04:44.4491905Z         }
2026-06-22T02:04:44.4491981Z       }
2026-06-22T02:04:44.4492058Z     },
2026-06-22T02:04:44.4492144Z     {
2026-06-22T02:04:44.4492268Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-22T02:04:44.4497434Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-22T02:04:44.4497758Z       "requiredStages": [
2026-06-22T02:04:44.4497845Z         "doc",
2026-06-22T02:04:44.4497931Z         "impl",
2026-06-22T02:04:44.4498015Z         "unit",
2026-06-22T02:04:44.4498102Z         "int"
2026-06-22T02:04:44.4498174Z       ],
2026-06-22T02:04:44.4498264Z       "stages": {
2026-06-22T02:04:44.4498344Z         "doc": {
2026-06-22T02:04:44.4498438Z           "complete": true,
2026-06-22T02:04:44.4498535Z           "evidence": [
2026-06-22T02:04:44.4498610Z             {
2026-06-22T02:04:44.4498708Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.4498795Z               "line": 342
2026-06-22T02:04:44.4498881Z             }
2026-06-22T02:04:44.4499037Z           ]
2026-06-22T02:04:44.4499114Z         },
2026-06-22T02:04:44.4499200Z         "impl": {
2026-06-22T02:04:44.4499286Z           "complete": true,
2026-06-22T02:04:44.4499366Z           "evidence": [
2026-06-22T02:04:44.4499443Z             {
2026-06-22T02:04:44.4499562Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:04:44.4499647Z               "line": 432
2026-06-22T02:04:44.4499734Z             },
2026-06-22T02:04:44.4499821Z             {
2026-06-22T02:04:44.4499934Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4500020Z               "line": 683
2026-06-22T02:04:44.4500102Z             },
2026-06-22T02:04:44.4500187Z             {
2026-06-22T02:04:44.4500301Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4500397Z               "line": 859
2026-06-22T02:04:44.4500488Z             },
2026-06-22T02:04:44.4500573Z             {
2026-06-22T02:04:44.4500683Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.4500761Z               "line": 700
2026-06-22T02:04:44.4500844Z             },
2026-06-22T02:04:44.4500921Z             {
2026-06-22T02:04:44.4501037Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.4501118Z               "line": 788
2026-06-22T02:04:44.4501201Z             }
2026-06-22T02:04:44.4501287Z           ]
2026-06-22T02:04:44.4501368Z         },
2026-06-22T02:04:44.4501455Z         "int": {
2026-06-22T02:04:44.4501550Z           "complete": true,
2026-06-22T02:04:44.4501640Z           "evidence": [
2026-06-22T02:04:44.4501717Z             {
2026-06-22T02:04:44.4501869Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:04:44.4501959Z               "line": 2073
2026-06-22T02:04:44.4502042Z             }
2026-06-22T02:04:44.4502122Z           ]
2026-06-22T02:04:44.4502207Z         },
2026-06-22T02:04:44.4502289Z         "unit": {
2026-06-22T02:04:44.4502384Z           "complete": true,
2026-06-22T02:04:44.4502460Z           "evidence": [
2026-06-22T02:04:44.4502546Z             {
2026-06-22T02:04:44.4502662Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4502751Z               "line": 1448
2026-06-22T02:04:44.4502823Z             },
2026-06-22T02:04:44.4502913Z             {
2026-06-22T02:04:44.4503024Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:04:44.4503104Z               "line": 1605
2026-06-22T02:04:44.4503190Z             },
2026-06-22T02:04:44.4503367Z             {
2026-06-22T02:04:44.4503489Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.4503570Z               "line": 2336
2026-06-22T02:04:44.4503651Z             },
2026-06-22T02:04:44.4503736Z             {
2026-06-22T02:04:44.4503849Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:04:44.4504031Z               "line": 2403
2026-06-22T02:04:44.4504117Z             },
2026-06-22T02:04:44.4504202Z             {
2026-06-22T02:04:44.4504303Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:04:44.4504398Z               "line": 1002
2026-06-22T02:04:44.4504478Z             }
2026-06-22T02:04:44.4504565Z           ]
2026-06-22T02:04:44.4504646Z         }
2026-06-22T02:04:44.4504731Z       }
2026-06-22T02:04:44.4504812Z     },
2026-06-22T02:04:44.4504895Z     {
2026-06-22T02:04:44.4504989Z       "id": "REQ-WHOAMI-1",
2026-06-22T02:04:44.4506603Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-22T02:04:44.4506701Z       "requiredStages": [
2026-06-22T02:04:44.4506788Z         "doc",
2026-06-22T02:04:44.4506875Z         "impl",
2026-06-22T02:04:44.4506960Z         "unit"
2026-06-22T02:04:44.4507045Z       ],
2026-06-22T02:04:44.4507127Z       "stages": {
2026-06-22T02:04:44.4507208Z         "doc": {
2026-06-22T02:04:44.4507303Z           "complete": true,
2026-06-22T02:04:44.4507383Z           "evidence": [
2026-06-22T02:04:44.4507470Z             {
2026-06-22T02:04:44.4507560Z               "path": "CONTEXT.md",
2026-06-22T02:04:44.4507651Z               "line": 707
2026-06-22T02:04:44.4507737Z             }
2026-06-22T02:04:44.4507823Z           ]
2026-06-22T02:04:44.4507903Z         },
2026-06-22T02:04:44.4507989Z         "impl": {
2026-06-22T02:04:44.4508086Z           "complete": true,
2026-06-22T02:04:44.4508167Z           "evidence": [
2026-06-22T02:04:44.4508256Z             {
2026-06-22T02:04:44.4508357Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4508443Z               "line": 3190
2026-06-22T02:04:44.4508533Z             },
2026-06-22T02:04:44.4508610Z             {
2026-06-22T02:04:44.4508721Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4508806Z               "line": 3218
2026-06-22T02:04:44.4508885Z             }
2026-06-22T02:04:44.4509033Z           ]
2026-06-22T02:04:44.4509119Z         },
2026-06-22T02:04:44.4509198Z         "int": {
2026-06-22T02:04:44.4509292Z           "complete": false,
2026-06-22T02:04:44.4509388Z           "evidence": []
2026-06-22T02:04:44.4509470Z         },
2026-06-22T02:04:44.4509559Z         "unit": {
2026-06-22T02:04:44.4509650Z           "complete": true,
2026-06-22T02:04:44.4509742Z           "evidence": [
2026-06-22T02:04:44.4509823Z             {
2026-06-22T02:04:44.4509931Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4510028Z               "line": 7847
2026-06-22T02:04:44.4510113Z             },
2026-06-22T02:04:44.4510189Z             {
2026-06-22T02:04:44.4510284Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:04:44.4510376Z               "line": 7900
2026-06-22T02:04:44.4510465Z             }
2026-06-22T02:04:44.4510546Z           ]
2026-06-22T02:04:44.4510633Z         }
2026-06-22T02:04:44.4510715Z       }
2026-06-22T02:04:44.4510800Z     }
2026-06-22T02:04:44.4510885Z   ],
2026-06-22T02:04:44.4510967Z   "findings": []
2026-06-22T02:04:44.4511053Z }
